我使用Spring 3.2.5來創建REST風格的Web服務。爲了實現它,我使用了@ResponseBody
標籤。當我使用InternalResourceViewResolver
並嘗試加載Html響應時,它工作正常。但是,當我打電話其被標記爲@ResponseBody
一個URL然後它給出HTTP 406與錯誤文本錯誤代碼作爲使用JSON的Spring REST風格的Web服務提供HTTP 406錯誤代碼
由該請求所標識的資源僅能夠與特徵產生響應的不能接受根據該請求「接受」標題。
我在我的lib目錄中也包含了Jackson jar文件。
這是我處理服務請求的控制器方法。
@ResponseBody
@RequestMapping (value = "/resp.htm")
public Data jsonResp() {
Data d = new Data();
d.setName("TEst");
d.setAddr("Address....");
return d;
}
有很多問題都被要求回答&,我試過很多人,但它仍然給出了同樣的結果。然後我遇到了一個新的答案,這是說明使用ContentNegotiatingViewResolver
。通過使用它,我能夠以預期的格式查看響應。這是JSON格式。
使用ContentNegotiatingViewResolver
,servlet調度代碼之後看起來是這樣的:
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="2" />
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
所以,我的問題是,當我們需要使用Spring的Web服務功能,我們必須要求有ContentNegotiatingViewResolver
?