2010-11-17 40 views
1

我有以下方法我的純老的XML Web服務的Spring MVC控制器:意外@ResponseBody格式

@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

看起來您嘗試直接編寫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> 
+1

啊,有一個XStreamMarshaller註冊。現在是多餘的,因爲沒有使用XStream,但忘記了編組人員。我刪除了所有的marshallers,現在看起來很好。乾杯。 – 2010-11-17 16:11:32