springmvc之JSR303獲取驗證錯誤訊息
阿新 • • 發佈:2018-12-20
在比較新的一個版本中,springmvc加入了JSR303這樣一個數據校驗的框架,通過這個我們可以在後臺驗證使用者輸入的一些資料是否合法,如果不合法,我們可以獲取相應的錯誤訊息:
那麼,在使用JSR303獲取錯誤訊息的時候,我們應該要注意些什麼呢?
以下是其中的一點:
獲取錯誤訊息的時候,在方法入參的位置, 可以加入BindingResult或者Errors作為其中的一個引數,這個入參必須與待驗證的方法發入參相鄰。比如:
@RequestMapping("/testFormat") public String testFormat(@Valid User user, BindingResult result) { // 獲取所有錯誤 // if (result.getErrorCount() > 0) { // List<ObjectError> errors = result.getAllErrors(); // for (ObjectError error : errors) { // System.err.println(error.getDefaultMessage()); // } // } // 獲取欄位的錯誤訊息 if (result.getFieldErrorCount() > 0) { List<FieldError> fieldErrors = result.getFieldErrors(); for (FieldError fieldError : fieldErrors) { System.out.println(fieldError.getField() + ":" + fieldError.getDefaultMessage());// 獲取錯誤訊息的詳細內容 } } System.out.println(user); return "success"; }
這樣我們就可以獲得使用者輸入的一些引數是否合法,如果不合法,就輸入相關的資訊:
如果在入參的位置還有其他引數的時候,就要注意其中的寫法了:如果像以下這樣寫是不正確的,會報400錯誤:
public String testFormat(@Valid User user,Map<String, Object> map, BindingResult result) {
}
因為:其中要驗證的是User,但是與User相鄰的卻是Map,而不是BindingResult,所以會包400錯誤。