代码之家  ›  专栏  ›  技术社区  ›  Paul McKenzie

@响应库意外格式

  •  1
  • Paul McKenzie  · 技术社区  · 15 年前

    我有一个Spring MVC控制器,用于我的纯旧xml web服务,方法如下:

    @RequestMapping(
            value = "/trade/{tradeId}",
            method = RequestMethod.GET)
    @ResponseBody
    public String getTrade(@PathVariable final String tradeId) {
        return tradeService.getTrade(tradeId).getXml();
    }
    

    哪种方式有效,我浏览器的输出是

    <?xml version="1.0" encoding="UTF-8"?><Trade id="foo"/>
    

    但如果我“查看源”,那么实际输出是

    <string>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;Trade ...
    

    显然,这不是我想要的。如何返回实际的XML?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Bozho    15 年前

    看起来您试图直接编写XML,但是XML转换器假定您给了它们对象,并将其封送到XML。

    你需要注册 StringHttpMessageConverter 在xml转换器之前。比如:

    <bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
                <property name="messageConverters">
                    <list>
                        <bean
                            class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.ResourceHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.StringHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
                        <bean
                            class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
               </list>
             </property>
        </bean>