我有一個Spring 3.2 MVC REST服務,它通過擴展ResponseEntityExceptionHandler
來實現錯誤處理。這將處理standard Spring exceptions,並且將根據客戶端的請求以相應的HTTP狀態和XML或JSON中的自定義「錯誤」ResponseEntity對象進行響應。這適用於除HttpMediaTypeNotAcceptableException
之外的所有標準例外。Spring MVC - 處理HttpMediaTypeNotAcceptableException時如何設置返回媒體類型?
我遇到的這個例外的問題是,它拋出第一個地方的原因是無法根據請求確定響應媒體類型(application/xml,application/json等)。如果我嘗試爲這個異常返回一個「Error」ResponseEntity對象,它將會失敗,因爲響應媒體類型無法確定(這就是爲什麼首先要處理這個異常)......並且基本上會得到另一個HttpMediaTypeNotAcceptableException
從我的ExceptionHandler。
我需要找出處理HttpMediaTypeNotAcceptableException
以指定有效的響應媒體類型的方法,因此ResponseEntity會將其傳送給客戶端。由於請求的媒體類型無法確定,這可能只是我的服務的默認設置(應用程序/ xml)
任何想法?
它在這種情況下返回'406 - Not Acceptable',但問題是我似乎沒有任何對body或Content-Type的控制權。我總是得到默認的HTML Tomcat錯誤頁面。我已經嘗試在響應中設置Content-Type標題,但在消息轉換器處理期間它會被刪除(與正文一起)。 – WayneC
Narf,我是tomcat並沒有那樣做,因爲我們已經在錯誤處理階段。我錯了。在鏈接到它的頁面上,在Cp 17.11.5中討論設置一個自定義錯誤頁面,在錯誤頁面中可以填入'@RequestMapping(value =「/ error」,產生=「application/json」)'控制器,也許這就是訣竅。 –