我有一個REST API方法:它將返回Xml作爲響應。只是爲了簡單,假設它拋出簡單的異常。Spring mvc - 爲XML和JSON響應配置錯誤處理
@RequestMapping(value = "machine/xmlData", method = RequestMethod.GET, produces = "application/xml")
public ResponseEntity<String> getXml(HttpServletRequest request)
throws Exception {
return getDataFromService();
}
現在我正在處理像這樣的REST控制器中的異常。 這是一般異常handle方法,對於其他API方法以及(XML或JSON響應)
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseEntity HandleException(Exception ex, HttpServletRequest request) {
ex.printStackTrace();
// here logic to generate Custom error Object
return new ResponseEntity<Object>(customErrorObject, HttpStatus.INTERNAL_SERVER_ERROR);
}
案例1:接受: 「應用程序/ XML」,並從服務有效響應 一切工作正常。
案例2:接受:從服務 「應用程序/ XML」 和異常然後我得到406 Not Representable
按我的理解,它是
因爲ResponseEntity從HandleException是JSON和接受標頭 是「應用程序/ xml」,這就是爲什麼我越來越406.
無論如何,我可以發送錯誤HandleException方法的響應xml和json? 我知道關於REST API方法,我們可以定義像這樣的produces={"application/json","application/xml"}
我很努力把這個放在HandleException方法上。
任何提示將有很大的幫助。
謝謝。
刪除handleResult中的@ResponseStatus並嘗試 – kuhajeyan
@kuhajeyan它沒有幫助。我試過 – Roxy