SpringMVC 捕獲錯誤訊息
控制器業務方法獲取錯誤訊息
BindingResult
常用的方法:
-FiledError getFiledError(String fileld)
-ListgetFieldErrors()
-Object getFiledValue(Sting fileld)
-int getErrorCount();
public String testFormat(**@Valid User user BindingResult result**)//緊挨在一起{ if(result.getFieldErrorCount()>0)//欄位錯誤訊息 List<FieldError> list=result.getFieldErrors();//FieldErrors是ObejctError的子類 for( FieldError fieldError:list) {fieldError.getField();//出錯欄位的名稱 fieldError.getDefaultMessage(); } }
注:在入參位置加入 BindingResult 或者Errors,這個入參必須與驗證的方法緊挨在一起
errors標籤在 頁面中獲取錯誤訊息
在JSP頁面上可通過`
<form:error path="userName">
顯示錯誤訊息
<%@taglib uri="form的全路徑" prefix="form"%> <form: form action="testFormat" **modelAttribue="user"**> Email <form: input path="email"/><form:error path="email">//想顯示email的錯誤,如果想顯示所有的用*
handler中方法如下:
public String testFormat(**@Valid User user BindingResult result**,Map<Sting,Obejct> map)//緊挨在一起{ if(result.getFieldErrorCount()>0){//欄位錯誤訊息 map.put("user",user); return "format"; }//返回前端頁面 return "success";請求轉發 } } @RequestMapping("/toFormat") public String toFormat(Map<Sting,Obejct> map){ map.put("user",new User()); return "format"; }
注:form:erroes:通過path屬性指定顯示的欄位對應的錯誤
form:erroes:必須放在form表單標籤的裡面
form標籤庫在使用的時候,不能直接訪問jsp,可以通過一個業務方法間接訪問頁面
錯誤訊息的國際化
每個屬性在資料繫結和資料校驗發生錯誤時,會生成一個對應的FieldError物件,當驗證失敗後,驗證框架會為該屬性生成4個訊息程式碼,這些程式碼以校驗註解類名為字首,結合modelAttribute、屬性名以及屬性型別名生成多個對應的訊息程式碼
-Pattern.user.password
-Pattern.password
-Pattern.java.lang.String
-Pattern
當使用springmvc標籤顯示錯誤訊息時,springmvc會檢視web上下文是否有匹配裝配了對應的國際化訊息,如果沒有,則顯示預設的錯誤訊息,否則使用國際化訊息
步驟:
先在src中加入2個國際化檔案
abc_en_US.properties Email.user.email=the email is error
abc_zh_CN.properties Email.user.email=你輸入的郵箱有誤
在springmvc.xml中加入bean
<bean id="messageSource"class=ResourceBundleMessageSource>
<property name="basename" value="abc"></property>
</bean>
注:錯誤訊息的定製
資原始檔當中key=value
key:驗證規則的名稱.modelAttribute.屬性名稱