spring-mvc整合freemarker並在ftl模版中顯示服務端校驗的錯誤信息,JSR303或者JSR349


寫法有多種,應該可以任意組合,最重要的是要引入spring.ftl


1.Bean裏面的就不再多寫了,來個簡單就可以了

@NotEmpty(message="用戶密碼碼不可爲空")  或者寫在get方法上
private String userPassword;


2.Controller裏面的寫法有幾種,看個人習慣


    (1).先看第一種這個是返回String的,參數中有@ModelAttribute("user"),在頁面中會用到,稍後再說

@RequestMapping(value="login",method=RequestMethod.POST)
	public String login(@ModelAttribute("user") @Valid User user, BindingResult br){
		if(br.hasErrors()){
			return "login";
		}else{
			return "redirect:index.jsp";
		}
}


   (2).第二種,這種同樣返回String,但是參數有變化,


public String login(@Valid User user, BindingResult br, ModelMap model){
		if(br.hasErrors()){
			model.addAttribute("user", user);
			return "login";
		}else{
			return "redirect:index.jsp";
		}
}

    (3)第三種,返回值的變化,同樣可以改變參數


public ModelAndView login(@ModelAttribute("user") @Valid User user, BindingResult br){
		if(br.hasErrors()){
			return new ModelAndView("login");
		}else{
			return new ModelAndView("redirect:index.jsp");
		}
}


........................看到這,你可能已經看出來其實也沒什麼,就是使用不同的類型來存放user

3.再看模版中的寫法,有兩種

(1).一個是bind的方式,這個就是遍歷了

<@spring.bind "user.userCode" />

<li><input type="text" name="userCode" value="${spring.status.value?default("")}" /></li>
<#list spring.status.errorMessages as error> <b>${error}</b> <br> </#list>


(2).第二個是輸出標籤,少寫一部分東西

<@spring.formInput "user.userCode" />
<@spring.showErrors "" />


最後。。。。就是你隨意組合吧,都可以正常顯示結果


剛開始用spring,花了三個多小時才讓這個顯示出來,就是有個地方沒有注意,剛開始進這個頁面的時候,user是空的,所以頁面會報錯,在POST方法中怎麼添加user都出錯,竟然一直沒有注意,真實悲催啊,後來發現之後就很順暢了,幾分鐘全部可以測試出來。

可以來個簡單的寫法,這樣就不會出錯了,也可以在get方式進這個頁面的時候在Model中new一個空的user,完全看個人習慣。

@ModelAttribute("user")
public User getUser() {
return new User();
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章