1. 程式人生 > >SpringMVC 捕獲錯誤訊息

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.屬性名稱