2013-08-31 111 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