此XML文件似乎没有与之关联的任何样式信息。文档树如下所示

时间:2012-07-08 05:29:13

标签: java html spring soap spring-mvc

我正在使用SPRING MVC。从客户端到控制器,我用下面的xml做了一个PUT。

<http-request method="PUT" url="/serviceproviders/{sp_id}/accessNumbers/{new_an_id}/languages" mime="application/xml">
        <content>
        <![CDATA[
         <additionalLanguages xmlns="http://www.XXX.com/pcs/model/schemas">
         <additionalLangIds>1003</additionalLangIds>
         </additionalLanguages>
        ]]>
        </content>

additionalLanguages是java类,声明如下

 @XmlRootElement(name = "additionalLanguages")
 @XmlAccessorType(XmlAccessType.NONE)
 public  class AdditionalLanguages implements Serializable{
     @XmlElement(name="additionalLangIds")
     private String sLanguageIDs = ""; 
     //getter & setter for sLanguageIDs 
 }

控制器正在返回视图     “org.springframework.web.servlet.view.RedirectView”。 并且这个视图本质上是为相同的URL“/ serviceproviders / {sp_id} / accessNumbers / {new_an_id} / languages”调用GET,它返回了AdditionalLanguages类的实例。

最后,我希望在浏览器“1003”中收到回复,这只不过是

<HTML>
<BODY>
<additionalLanguages xmlns="http://www.XXX.com/pcs/model/schemas">
<additionalLangIds>1003</additionalLangIds>
</additionalLanguages>
</BODY>
</HTML>

但我得到的是浏览器中的“警告和XML内容”,而不是“1003”值

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<additionalLanguages xmlns="http://www.radisys.com/pcs/model/schemas">
<additionalLangIds>1003</additionalLangIds>
</additionalLanguages>

此输出未与客户端期望映射,这导致客户端出现以下错误消息。

Execute action [repitition=0]: PUT -http://{SERVER}/PcsRESTApi/serviceproviders/1/accessNumbers/2020/languages
---HTTP RESPONSE---
HTTP Status: 500 - Internal Server Error
Response Headers:
  Date=Sat, 07 Jul 2012 23:19:45 GMT
  Server=Apache/2.2.16 (Unix) mod_jk/1.2.28
  errorCode=unknown
  errorMessage=Could not find acceptable representation
  Accept-Charset=big5, big5-hkscs, compound_text, euc-jp, euc-kr, gb18030, gb2312, gbk, ibm-thai, ibm00858, ibm01140, ibm01141, ibm01142, ibm01143, ibm01144, ibm01145, ibm01146, ibm01147, ibm01148, ibm01149, ibm037, ibm1026, ibm1047, ibm273, ibm277, ibm278, ibm280, ibm284, ibm285, ibm297, ibm420, ibm424, ibm437, ibm500, ibm775, ibm850, ibm852, ibm855, ibm857, ibm860, ibm861, ibm862, ibm863, ibm864, ibm865, ibm866, ibm868, ibm869, ibm870, ibm871, ibm918, iso-2022-cn, iso-2022-jp, iso-2022-jp-2, iso-2022-kr, iso-8859-1, iso-8859-13, iso-8859-15, iso-8859-2, iso-8859-3, iso-8859-4, iso-8859-5, iso-8859-6, iso-8859-7, iso-8859-8, iso-8859-9, jis_x0201, jis_x0212-1990, koi8-r, koi8-u, shift_jis, tis-620, us-ascii, utf-16, utf-16be, utf-16le, utf-32, utf-32be, utf-32le, utf-8, windows-1250, windows-1251, windows-1252, windows-1253, windows-1254, windows-1255, windows-1256, windows-1257, windows-1258, windows-31j, x-big5-solaris, x-euc-jp-linux, x-euc-tw, x-eucjp-open, x-ibm1006, x-ibm1025, x-ibm1046, x-ibm1097, x-ibm1098, x-ibm1112, x-ibm1122, x-ibm1123, x-ibm1124, x-ibm1381, x-ibm1383, x-ibm33722, x-ibm737, x-ibm834, x-ibm856, x-ibm874, x-ibm875, x-ibm921, x-ibm922, x-ibm930, x-ibm933, x-ibm935, x-ibm937, x-ibm939, x-ibm942, x-ibm942c, x-ibm943, x-ibm943c, x-ibm948, x-ibm949, x-ibm949c, x-ibm950, x-ibm964, x-ibm970, x-iscii91, x-iso-2022-cn-cns, x-iso-2022-cn-gb, x-iso-8859-11, x-jis0208, x-jisautodetect, x-johab, x-macarabic, x-maccentraleurope, x-maccroatian, x-maccyrillic, x-macdingbat, x-macgreek, x-machebrew, x-maciceland, x-macroman, x-macromania, x-macsymbol, x-macthai, x-macturkish, x-macukraine, x-ms950-hkscs, x-mswin-936, x-pck, x-utf-16le-bom, x-utf-32be-bom, x-utf-32le-bom, x-windows-50220, x-windows-50221, x-windows-874, x-windows-949, x-windows-950, x-windows-iso2022jp
  Content-Length=5243
  Connection=close
  Content-Type=application/xml
Response Body:
unknown: Could not find acceptable representation
org.springframework.web.HttpMediaTypeNotAcceptableException Could not find acceptable representation
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.writeWithMessageConverters(AnnotationMethodHandlerAdapter.java:954)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.handleResponseBody(AnnotationMethodHandlerAdapter.java:898)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.getModelAndView(AnnotationMethodHandlerAdapter.java:847)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:423)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:774)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)

我的问题是为什么输出不是值?为什么它是XML? 我在这里缺少什么。

请帮助我。我挣扎了很久。你是我唯一的希望。


决议
只在直接从控制器返回值(对象)时添加@ResponseBody。如果您正在执行重定向网址;不要添加此注释。

2 个答案:

答案 0 :(得分:2)

控制器的输出看起来完全有效 - 从您的描述看起来您的“PUT”请求看起来干净利落,返回RedirectView,并且在重定向方法中,它返回“AdditionalLanguages”,我假设您已使用@注释ResponseBody,这就是Spring使用MessageConverter(在本例中为Jaxb)将AdditonalLanguages响应转换为XML的原因。

简而言之,输出是一个值,因为您可能已将重定向视图的响应映射到@ResponseBody。

答案 1 :(得分:-1)

rfc include='reference.I-D.ietf-anima-grasp'?> 
<?rfc include='reference.I-D.greevenbosch-appsawg-cbor-cddl'?> 
<?rfc include='reference.I-D.ietf-anima-bootstrapping-keyinfra'?> 
<?rfc include='reference.I-D.ietf-anima-autonomic-control-plane'?> 
<?rfc include='reference.RFC.3633'?> 
</references> <references title="Informative References"> 
<?rfc include='reference.RFC.2629'?> 
<?rfc include='reference.RFC.7575'?> 
<?rfc include='reference.RFC.7576'?> 
<?rfc include='reference.I-D.ietf-anima-reference-model'?> 
</references> 
</back> 
</rfc