java - Java 类 java.util.ArrayList 的消息体编写器

标签 java list jersey jax-rs

我在访问我的 jax-rs 资源时收到以下堆栈跟踪。

我使用的是 Tomcat 7、Jersey 1.12、Hibernate 4 和 MySQL。

我在寻找解决方案时发现了这个教程:http://aruld.info/handling-generified-collections-in-jersey-jax-rs/但列出的示例似乎都不起作用。

我在这里错过了什么?

请不要让我写 MessageBodyWriters 的答案,这应该可以解决问题。 (而且我知道有一个解决方案,我就是想不通。)

这是我所有的 jar :

antlr-2.7.7.jar
asm-3.1.jar
commons-collections-3.2.1.jar
dom4j-1.6.1.jar
gson-1.7.1.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.0.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.CR2.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
jersey-client-1.12.jar
jersey-core-1.12.jar
jersey-json-1.12.jar
jersey-server-1.12.jar
jersey-servlet-1.12.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
mysql-connector-java-3.1.12-bin.jar

这是我的资源类和方法:

@Path("/region")
public class RegionService {
    // This method is called if TEXT_PLAIN is request
    @GET
    @Produces(MediaType.APPLICATION_JSON)   
    public JResponse<List<Region>> region() {
        RegionDao regionDao = new RegionDao();
        regionDao.openSession();
        List<Region> regions = regionDao.getAll();
        regionDao.closeSession();
        return JResponse.ok(regions).build();
    }
}

这里是堆栈跟踪:

SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<campher.hibernate.entities.Region>, and MIME media type application/json was not found
    at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1451)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)

最佳答案

您需要使用 @XmlRootElement 注释 Region 类。

关于java - Java 类 java.util.ArrayList 的消息体编写器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040995/

相关文章:

java - 从同步列表中删除元素的正确方法

java - 将项目导入 Netbeans

java - 在枚举 javax.ws.rs.core.Response.Status.Family 中找不到 Status$Family

java - 无法将 Jersey 重定向迁移到 Spring 重定向

java - Netbeans 在鼠标悬停时显示方法头(参数、返回值)

java - 我们为什么或为什么不应该使用 Java 7?

python - 如何在没有重复项的列表中找到第一个值?

flutter - 如何在不识别键的情况下获取列表<map<string,dynamic>数据每个映射键和值

arrays - Pyspark 数据框 : Count elements in array or list

java - Jersey 中的 URI 扩展(.xml、.json)