1. 程式人生 > >springmvc之JSR303獲取驗證錯誤訊息

springmvc之JSR303獲取驗證錯誤訊息

在比較新的一個版本中,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錯誤。