1

技术栈:Java 1.6、JAXB、Spring 3、JAX-RS (RESTEasy)、XSD

你好,

我正在使用带有 JAX-RS 的 Spring 来创建 RestFul Webservice。

一切正常,除了生成的响应包含设置器信息,例如

  {
    ...

    "setName": true,
    "setId": true,
    "setAddress": true,
    "setAge": true,
}

我不知道这可能是什么原因造成的?我怎样才能关闭它?

阿迪

更新 1:

PersonRequest 类由 JAXB 生成并包含所有 javax.xml.bind.annotation.* 注释。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "personResponse " })
@XmlRootElement(name = "PersonResponse ")
public class PersonResponse {

    @XmlElement(name = "Name", required = true)
    protected String name;

    @XmlElement(name = "Id", required = true)
    protected String id;

    // and the setters and getters



}

资源看起来像这样:

@Component
@Path("/person")
public class PersonImpl implements Person {

    @Override
    @GET
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "application/x-amf" })
    @Path("v1")
    public PersonResponse getPerson() {

       ....
       ....
    }


}

** 更新 2 ** 仅当 Content-Type 为 json 时才会发生这种情况,如果 Content Type 为“xml”,则不返回 setter。如果这有帮助。

4

2 回答 2

0

我怀疑堆栈的其他部分正在将额外的字段编织到您的域模型中(即一些 ORM 库会这样做)。为了确认您可以使用java.lang.reflectAPI 查看您的类在被ClassLoader.

于 2012-09-27T12:12:09.747 回答
0

问题出在 xjb 文件中,有关详细信息,请参阅此处的相关问题。

于 2012-10-12T14:09:45.200 回答