@ResponseBody意外格式

时间:2010-11-17 15:42:15

标签: java spring spring-mvc

我使用以下方法为我的普通xml Web服务安装了一个Spring MVC控制器:

@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"/>

但如果我&#34;查看来源&#34;那么实际输出是

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

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

1 个答案:

答案 0 :(得分:1)

您似乎尝试直接编写XML,但xml转换器假设您正在为它们提供对象,并将它编组为XML。

您需要在xml转换器之前注册StringHttpMessageConverter。像:

<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>