我有一个带有BookMeta对象的ArrayList的Books类,arraylist的名字是bookList。
如果bookList拥有多个BookMeta,它在接收数组时对客户端有效。但是如果bookList中只有一个BookMeta对象,则它们不会收到数组,而是获得一个元素。我采取以下解决方法强制输出为一个数组:
@Provider
public class JaxbContextResolver implements ContextResolver<JAXBContext> {
private JAXBContext context;
private Class[] types = {BookMeta.class, Books.class};
public JaxbContextResolver() throws Exception {
this.context = new JSONJAXBContext( JSONConfiguration.mapped().arrays("bookList").build(), types);
}
public JAXBContext getContext(Class<?> objectType) {
for (Class type : types) {
if (type == objectType) {
return context;
}
}
return null;
}
}
我仍然没有得到阵列。我还该怎么办?我是否需要显式注册Provider类?我在某处读到了它们会被自动检测到。
感谢。
编辑:我使用的是Tomcat 6,我的web.xml看起来像是:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
答案 0 :(得分:0)
搞定了......做了一个愚蠢的错误 - 提交者类必须保存在web.xml中配置的resources文件夹(带有属性com.sun.jersey.config.property.packages)
感谢您的帮助!
答案 1 :(得分:0)
我的课程不在资源文件夹中,而且工作正常。 我必须在arrays()方法中放置一个正确的值。