Java 有没有办法设置Jersey资源返回的ArrayList的名称
我在Jersey Web服务资源中有一个方法,它返回对象的ArrayListJava 有没有办法设置Jersey资源返回的ArrayList的名称,java,rest,jersey,Java,Rest,Jersey,我在Jersey Web服务资源中有一个方法,它返回对象的ArrayList @GET @Path("/GetMyObjects") public List<MyObjectDTO> getMyObject() { List<MyObjectDTO> myObjects = new ArrayList<MyObjectDTO>(); // ... fill the list ... return myObects; } @GET @路
@GET
@Path("/GetMyObjects")
public List<MyObjectDTO> getMyObject() {
List<MyObjectDTO> myObjects = new ArrayList<MyObjectDTO>();
// ... fill the list ...
return myObects;
}
@GET
@路径(“/GetMyObjects”)
公共列表getMyObject(){
List myObjects=new ArrayList();
//…填写列表。。。
返肌;
}
这是可行的,但是当ACCEPT头设置为application/xml时,表示ArrayList的根xml对象是
。我猜框架通过参数化类型的反射命名列表,并应用一些基本语法规则使其成为复数。我的问题是如何将其覆盖为类似
谢谢您可以在POJO上使用来命名响应中返回的XML元素
根据第一条评论进行更新
据我所知,使用Jersey+JAXB解决此问题的最佳方法是定义一个听起来像是不必要重复的包装器类:
@XmlRootElement(name="yourName")
class JaxbCollectionWrapper<T> {
private Collection<T> objects;
@XmlElement(name="singleObjectName")
public Collection<T> getObjects() {/* BLAH */}
}
@XmlRootElement(name=“yourName”)
类JaxbCollectionWrapper{
私人收藏对象;
@XmlElement(name=“singleObjectName”)
公共集合getObjects(){/*BLAH*/}
}
还要注意,@xmlementwrapper
不能与Jersey一起使用
如果您使用RESTEasy,有一个直接的解决方案可以提供您想要的<代码>@Wrapped已描述。是如果我只返回一个对象,则此操作有效。但是,当我返回此POJO的ArrayList时,根元素是ArrayList,因此我无法向该类添加注释。我的问题是,在构建ArrayList时,是否有方法以编程方式设置根元素名称?答案将根据我对该问题的理解和了解进行更新。嘿,你解决了该问题吗?我有同样的问题。