2013-08-31 113 views
0

我是新来的球衣。我有一个测试休息以返回一个Map。泽西申请头申请失败/ xml

@GET 
    @Path("/maptest") 
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
    public Map<String, TestObject> mapTest() 
      throws JdException { 
     // return a non-empty HashMap contains String-TestObject 
    } 

} 

如果请求头设置为/或应用程序/ JSON它工作正常。但如果请求头是应用程序/ xml,则会失败:

Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.HashMap, and Java type java.util.Map<java.lang.String, TestObject>, and MIME media type application/xml was not found 
    ... 31 more 

我已将XmlRootElement注释添加到TestObject。如果返回类型设置为List<TestObject>,它可以与application/xml一起使用。不能XML处理Map?

回答

1

泽西岛不提供地图的MessageBodyWriter,所以你不能返回地图;相反,泽西岛确实提供了正宗MessageBodyWriter,这就是为什么它适用于集合

幸运的你有一些选择:

  1. 编写自定义MessageBodyWriter(见this
  2. 返回一个自定义对象包装你的地图,并通过jaxb将其设置为xml-serializable;您必须编写一个XmlMapAdapter(请参阅thisthis
+0

感谢您的详细回答。 – DeepNightTwo