写法有多种,应该可以任意组合,最重要的是要引入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();
}