2012-02-16 16 views
10

Mientras trato de devolver List its throwing No se ha encontrado ningún mensaje body writer para la clase de respuesta ArrayList.No se ha encontrado ningún mensaje cuerpo escritor para la clase de respuesta ArrayList

que tienen código de la siguiente manera:

@POST 
@Path("/{scope}/{application}/tables") 
@Produces("application/xml") 
public List<String> getTableNames(@PathParam("scope") String scope, 
    @PathParam("application") String application, Request request) { 

    // For example, I am returning a list of String 
    return new ArrayList<String>(4); 
} 

por favor me ayude. Gracias de antemano

Respuesta

19

Para devolver una lista, mejor envuélvala en un contenedor con la anotación @XmlRootElement y déle a ese contenedor su lista como un campo, anotado como @XmlElement.

así:

@XmlRootElement 
public class Container { 
    @XmlElement 
    public List yourlist; 
} 
+2

Y asegúrese de que 'Container' tenga un constructor predeterminado, no-args :) – vikingsteve

3

Ver this, Su JAXB te está dando problemas, no sabe cómo desmarastrar/ordenar una Lista.

-1

intente utilizar el GenericEntity.

Response.ok(new GenericEntity<List<String>>(yourCollectionOfStrings) {}).build(); 
0

Para evitar la envoltura, se puede usar Jackson. Sobre cómo hacerlo, puede seguir mi answer para una pregunta similar.

+1

Necesita esa configuración si tiene la intención de devolver la respuesta como JSON. De hecho, si nos fijamos en esta respuesta para esta pregunta (http://stackoverflow.com/questions/24653329/jaxrs-client-cont-find-message-body-writer/25536584#25536584) notará que la configuración simple como esta trabajará. Pero él quiere un XML como respuesta. – saibharath

0

He agregado la Lista al objeto existente del alcance del proyecto de la capa de dominio.

Era más contextual para el proyecto y también funcionaba desde el primer momento: no es necesario probar XmlRootElement, pero agrega la lógica de datos de prueba para la Lista de casos de prueba existentes para ese objeto.

Cuestiones relacionadas