我們有2套控制器..一個用於返回HttpEntity(用於ajax調用)和一個用於ModelAndView的響應。所有控制器都擴展了一個BaseController,並在其中定義了異常處理。如何爲不同的響應類型使用@ExceptionHandler
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseEntity<String> handleException(final Exception e) {
return new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
但是這個控制器只處理與響應'HttpEntity'但不是ModelAndView相關的控制器的異常。在這種情況下,我需要兩個基本控制器來處理異常,還是我可以修改這個現有的BaseController來處理所有異常?
您是否嘗試添加另一個返回ModelAndView的異常處理程序? – CodeChimp 2013-03-07 21:15:11
試過,但沒有運氣。通常它會輸入與輸入參數匹配的第一個函數。 – user864077 2013-03-07 22:59:09
以@Arahant的說法,你可能想考慮的一件事是將錯誤處理推送到你的控制器實現中,但是將實際方法的主體移到錯誤處理服務類中,這樣你就可以將代碼維護在一個地方。 – CodeChimp 2013-03-08 14:02:53