Le corps d'un message de l'écrivain pour la classe Java java.util.Liste de tableaux...et le type MIME text/xml n'a pas été trouvé
Im en utilisant Maillot de construire un Service REST et que vous voulez revenir un Collection<String>
comme XML.
@GET
@Produces(MediaType.TEXT_XML)
@Path("/directgroups")
public Response getDirectGroupsForUser(@PathParam("userId") String userId) {
try {
Collection<String> result = service.getDirectGroupsForUser(userId, null, true);
// return result; //first try
// return result.toArray(new String[0]); //second try
return Response.ok().type(MediaType.TEXT_XML).entity(result).build(); //third try
} catch (UserServiceException e) {
LOGGER.error(e);
throw new RuntimeException(e.getMessage());
}
}
mais mes tentatives échouent avec l'exception suivante:
javax.ws.rs.WebApplicationException: com.soleil.jersey.l'api.MessageException: le corps d'Un message de l'écrivain pour la classe Java java.util.Liste de tableaux, et de type Java de la classe java.util.Liste de tableaux, et le type MIME text/xml n'a pas été trouvé
et tous les résultats de cette exception que j'ai trouvé via google traitées avec le retour text/json au lieu de text/xml comme dans ma situation.
Quelqu'un peut m'aider? J'ai pensé que, si j'utilise une Réponse, ce serait mon élément racine XML et ma collection une liste des éléments de chaîne en elle..
OriginalL'auteur lrxw | 2013-03-25
Vous devez vous connecter pour publier un commentaire.
REMARQUE: Bien que cette réponse œuvres, anar de réponse est mieux.
Vous devriez essayer d'utiliser un JAXB annoté de la classe pour résoudre votre problème. Vous pouvez changer votre méthode pour cela:
Et puis créer un JAXB annoté de la classe pour vos groupes. J'ai inclus une classe générée pour vous, en utilisant le processus décrit dans cette réponse. Voici un exemple des documents qu'elle produit:
Et ici, c'est la classe générée:
Au minimum, quelque chose doit dire Jersey le nom de l'élément XML racine. Il semble que vous pouvez utiliser un wrapper générique et JAXB ou le XStream bibliothèque.
stackoverflow.com/questions/17342218/... ..pouvez-vous résoudre ce problème ??
OriginalL'auteur Christian Trimble
Utilisation
Le Générique de l'entité wrapper travaille pour obtenir à la sortie lors de l'utilisation de la Réponse du constructeur.
Référence
malheureusement, le lien que vous l'avez mentionné ici est maintenant mort, mais aurait été bien utile
docs.oracle.com/javaee/6/api/javax/ws/rs/core/...
et jersey.java.net/apidocs/2.5.1/jersey/index.html?javax/ws/rs/...
Même si cela a fonctionné pour moi, j'ai préféré cette solution, qui a été encore plus simple 😉 stackoverflow.com/questions/29136404/...
OriginalL'auteur anar
La seule chose qui a fonctionné pour moi jusqu'à présent est de créer mon propre objet Wrapper.
N'oubliez pas le @XmlRootElement annotation pour expliquer JAXB comment l'analyser.
Noter que cela fonctionne pour n'importe quel type d'objet dans cet exemple j'ai utilisé ArrayList de String.
par exemple
L'objet Wrapper devrait ressembler à ceci:
Et le RESTE de la méthode devrait ressembler à ceci:
OriginalL'auteur Naor Bar
ajoutant @XmlRootElement(name = "nom de la classe") à l'objet que je veux de retour , résolu mon problème
OriginalL'auteur user3145787