2012-02-12 68 views
3

例如,如何處理這種控制器的操作方法的驗證錯誤和可能的例外:如何處理RESTful Spring MVC控制器中的驗證錯誤和異常?

@RequestMapping(method = POST) 
@ResponseBody 
public FooDto create(@Valid FooDTO fooDto, BindingResult bindingResult) { 
    if (bindingResult.hasErrors()) { 
     return null; // what to do here? 
        // how to let the client know something has gone wrong? 
    } else { 
     fooDao.insertFoo(fooDto); // What to do if an exception gets thrown here? 
            // What to send back to the client? 
     return fooDto; 
    } 
} 
+0

發回相應的錯誤響應和/或代碼。我猜,我不明白這個問題。 – 2012-02-12 03:16:35

+0

該操作返回一個'FooDTO',如何用一些驗證錯誤消息發回適當的響應? – 2012-02-12 06:12:06

回答

12

拋出一個異常,如果你有一個錯誤,然後用@ExceptionHandler to annotate another method然後將處理異常和渲染相應的響應。

+1

他甚至可以使用'throw new BindException(bindingResult)',然後爲BindException設置處理程序。 – 2012-08-21 13:41:18

+2

他甚至不必顯式拋出'BindException'。只要從方法中移除'BindingResult'參數,如果有任何驗證錯誤,spring將拋出'BindException'。異常處理程序方法可以訪問所有的錯誤細節,因爲'BindException'實現'BindingResult'和'Errors'。 – JCoster22 2016-05-15 05:48:20

1
@RequestMapping(method = POST) 
@ResponseBody 
public FooDto create(@Valid FooDTO fooDto) { 
//Do my business logic here 
    return fooDto; 

} 

創建正異常處理程序:

@ExceptionHandler(MethodArgumentNotValidException.class) 
@ResponseBody 
@ResponseStatus(value = org.springframework.http.HttpStatus.BAD_REQUEST) 
protected CustomExceptionResponse handleDMSRESTException(MethodArgumentNotValidException objException) 
{ 

    return formatException(objException); 
} 

我不知道這是正確的做法我下面。如果你能告訴我你在這個問題上做了什麼,我將不勝感激。