我對Spring MVC相當陌生。今天,當我學習@ResponseBody
,我有一些問題有關HttpMessageConverter
S:@ResponseBody選擇不同的響應格式
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
</list>
</property>
</bean>
如上所述,我們可以聲明不同的轉換器的列表。所以這意味着我們可以選擇其中一個作爲響應體轉換器。
但如何選擇一個使用?例如,在functionA()
中返回JSON,然後在functionB()
中返回XML。
我的方法是強制Content-Type
的迴應,這是正確的方法嗎?還是有更好的解決方案?
public @ResponseBody User getUser(HttpServletResponse response) {
response.setContentType("application/xml");
// SOME CODES HERE
return user;
}
;對生產 「的charset = UTF-8」。 – Walfrat
謝謝,非常清楚的主意!有關更多詳細信息,我們只能使用由RequestMappingHandlerAdapter中定義的轉換器支持的Contetn類型來設置'produce'?或者它已經支持一些像JSON或String這樣的轉換器,我們不需要在xml配置文件中顯式聲明它們? – DONG
每個'HttpMessageConverter'都有一個'getSupportedMediaTypes',它定義了這個轉換器可以處理的媒體類型。看看https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/HttpMessageConverter.html –