似乎最新的JAX-RS可以处理将java.util.List作为XMLRootElement返回的方法,但普通的JAXB不能.我想模仿CXF和泽西岛正在做什么.
换句话说,我想列出一个名单,就像CXF和泽西岛一样.通常,如果您尝试使用JAXB封送列表,则会获得根元素异常.如何在不必制作包装物的情况下解决这个问题?
编辑:感谢您的答案,但我对@XmlElementWrapper非常熟悉,但这甚至不能模拟JAX-RS正在做的事情.
JAX-RS执行此操作:
@XmlRootElement(name="dog")
public class Dog {
private String name;
public String getName() { return this.name; }
//Setter also
}
Run Code Online (Sandbox Code Playgroud)
现在如果我序列化狗列表:
serialize(List<Dog> dogs);
Run Code Online (Sandbox Code Playgroud)
XML应该是(JAX-RS所做的):
<dogs>
<dog><name>Rascal</name></dog>
</dogs>
Run Code Online (Sandbox Code Playgroud)
所以你可以看到我不想为每个域对象创建一个包装器对象.
小智 7
你能不能简单地添加:
@XmlElementWrapper(name = "wrapperName")
Run Code Online (Sandbox Code Playgroud)
无需创建包装器对象.这将是您的编组XML响应中的路由元素.
我相信 Blaise Doughan 在这里展示了这个问题的一个很好的解决方案:Is it possible toprogrammatically configure JAXB?
和
http://blog.bdoughan.com/2012/11/creating-generic-list-wrapper-in-jaxb.html
尽管用例略有不同,但这里有些不同:
http://blog.bdoughan.com/2012/02/xmlanyelement-and-xmladapter.html
| 归档时间: |
|
| 查看次数: |
8775 次 |
| 最近记录: |