springmvc資料的格式化及資料校驗
一、資料的格式化
① 配置<mvc:annotation-driven></mvc:annotation-driven>
② 直接在要格式化的屬性上加上格式化(這個格式是匹配你輸入的資料的格式)
@DateTimeFormat(pattern="yyyy-MM-dd")
privateDate birth;
@NumberFormat(pattern="#,###,###.#") //用#表示數值
privateFloat salary;
格式化出錯了怎麼辦?-----在目標方法中加上BindingResult引數,在呼叫其方法看其錯誤。
BindingResult父類是errors,所以BindingResult和errors都可以用於儲存錯誤資訊。
@RequestMapping(value="/emp", method=RequestMethod.POST) public String save(@Valid Employee employee, Errors result, Map<String, Object> map){ if(result.getErrorCount() > 0){ System.out.println("出錯了!"); for(FieldError error:result.getFieldErrors()){ System.out.println(error.getField() + ":" + error.getDefaultMessage()); } //若驗證出錯, 則轉向定製的頁面 map.put("departments", departmentDao.getDepartments()); return "input";
二、資料校驗
1). 如何校驗 ? 註解 ?
① 使用 JSR 303 驗證標準
② 加入 hibernate validator 驗證框架的 jar 包
③ 在 SpringMVC 配置檔案中新增 <mvc:annotation-driven/>
④ 需要在 bean 的屬性上新增對應的註解(有很多註解,如@Email:必須是郵箱格式)
如在Employee類中的屬性,
@NotEmpty
private String lastName;
⑤. 在目標方法 bean 型別的前面新增 @Valid註解
public String save(@Valid Employee
⑥ 但是執行的時候回報錯,是jar包的錯誤
解決:將hibernatevalidator中的三個跟el相關的jar包複製到tomcat中,同時刪除tomcat中的就可以了。其中,Errorsresult可以改為BindingResultresult
2). 驗證出錯轉向到哪一個頁面 ?
注意: 需校驗的 Bean 物件和其繫結結果物件或錯誤物件時成對出現的,它們之間不允許宣告其他的入參。
public String handle91(@Valid User user, BingingResult userBindingResult, String sessionId, ModeluMap, mm, @Valid Dept dept, Errors deptErrors){user和其繫結結果的物件及dept的其繫結結果的物件各自中間不能宣告其他的入參。
3). 錯誤訊息 ? 如何顯示, 如何把錯誤訊息進行國際化
顯示:<form:errors path="*"></form:errors> //顯示所有的錯誤資訊
或者可以在每個欄位後面顯示其錯誤,不過path要和這個欄位名相同。
國際化:
① springmvc.xml配置
② 在i18n.properties中
編寫的格式是:校驗註解名.請求域中物件名.屬性名,如:
NotEmpty.employee.lastName=^^LastName\u4E0D\u80FD\u4E3A\u7A7A.