2017-08-31 36 views
-3

我在rest控制器中定義了註解@ExceptionHandler,但它不起作用,因爲我希望將結果類型標記爲text/plain,該方法被定義爲處理附加上載請求。 SpringMvc只是把我的業務異常拋給了servlet容器。它是SpringMVC的一個bug嗎?我該如何解決它?SpringMvc不處理異常

@RestController 
@RequestMapping("/api/test") 
public class TestController extends BasicController{ 
    @RequestMapping(value="/uploadAttach", headers = ("content-type=multipart/*"),method = RequestMethod.POST,produces="text/plain") 
    public String test(){ 
    throw new ServiceException("biz exception"); 
    } 
    @ExceptionHandler(value = {ServiceException.class}) 
    @ResponseStatus(HttpStatus.BAD_REQUEST) 
    public @ResponseBody StatusMessage serviceError(ServiceException ex) { 
    return new StatusMessage(ex.getMessage()); 
    } 
} 

回答

0

由於沒有人有興趣回答這個問題,我必須自己解決它。 我發現異常處理程序會尋找正確的轉換器來處理被定義爲@ExceptionHandler的返回值的異常結果。在我的控制器中,異常是一個pojo,當我打開程序時,我發現沒有轉換器可以寫pojo來輸入「text/plain」,所以SpringMvc將原始異常拋出到servlet容器中,並返回一個錯誤頁面由碼頭。