1. 程式人生 > >springmvc資料的格式化及資料校驗

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 

employee, Errors result, Map<String, Object> map){

⑥ 但是執行的時候回報錯,是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.