java 此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11380888/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
This XML file does not appear to have any style information associated with it. The document tree is shown below
提问by Kanagavelu Sugumar
I am using SPRING MVC. From the client to controller I did a PUT with the below xml.
我正在使用 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 is java class and declared like below
additionalLanguages 是 java 类,声明如下
@XmlRootElement(name = "additionalLanguages")
@XmlAccessorType(XmlAccessType.NONE)
public class AdditionalLanguages implements Serializable{
@XmlElement(name="additionalLangIds")
private String sLanguageIDs = "";
//getter & setter for sLanguageIDs
}
Controller is returning view of "org.springframework.web.servlet.view.RedirectView". And this view is inherently calling GET for the same url "/serviceproviders/{sp_id}/accessNumbers/{new_an_id}/languages" which is returning instance of AdditionalLanguages class.
控制器正在返回“org.springframework.web.servlet.view.RedirectView”的视图。这个视图本质上是为相同的 url "/serviceproviders/{sp_id}/accessNumbers/{new_an_id}/languages" 调用 GET,它返回 AdditionalLanguages 类的实例。
Finally I am expecting to receive a response in browser "1003" which is nothing but
最后,我期待在浏览器“1003”中收到响应,这不过是
<HTML>
<BODY>
<additionalLanguages xmlns="http://www.XXX.com/pcs/model/schemas">
<additionalLangIds>1003</additionalLangIds>
</additionalLanguages>
</BODY>
</HTML>
But what i got is the below "warning and XML content" in the browser instead of "1003" value
但是我得到的是浏览器中的以下“警告和 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>
This output is not mapped with client expectation and This is causing the below error message at client side.
此输出未与客户端期望映射,这导致客户端出现以下错误消息。
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)
My question is why the output is not a value? and why it is XML? What i am missing here.
我的问题是为什么输出不是值?为什么是 XML?我在这里缺少什么。
Kindly help me. I am struggling for long time. You are my only hope.
请帮助我。我挣扎了很长时间。你是我唯一的希望。
Resolution
Only add @ResponseBody when you are returning a value(object) directly from the controller. If you are performing a redirect url; don't add this annotations.
解决方法
仅在直接从控制器返回值(对象)时添加 @ResponseBody。如果您正在执行重定向网址;不要添加此注释。
回答by Biju Kunjummen
The output from the controller looks perfectly valid - from your description it looks like your "PUT" request worked cleanly, returned the RedirectView, and in the redirected method, it returned "AdditionalLanguages" which I am assuming you have annotated with @ResponseBody, which is the reason why Spring used a MessageConverter(in this this case Jaxb) to convert your AdditonalLanguages response to XML.
控制器的输出看起来完全有效 - 从您的描述看来,您的“PUT”请求工作正常,返回了 RedirectView,并且在重定向的方法中,它返回了“AdditionalLanguages”,我假设您已经用 @ResponseBody 注释了它这就是为什么 Spring 使用 MessageConverter(在本例中为 Jaxb)将您的 AdditonalLanguages 响应转换为 XML 的原因。
So in short, the output is a value because likely you have mapped the response from the redirected view to @ResponseBody.
简而言之,输出是一个值,因为您可能已将响应从重定向视图映射到@ResponseBody。