这里使用hibernate提供的校验器,maven pom文件代码如下:
org.hibernate
hibernate-validator
5.1.3.Final
在Spring配置文件中进行如下配置:
建立需要校验的Model类,并对需要校验的成员变量使用注解绑定校验规则:
public class MemberRegisterDto implements java.io.Serializable {
private static final long serialVersionUID = 559971017090874568L;
@NotEmpty(message = "{memberUsername.empty}")
@Length(min = 4, max = 20, message = "{memberUsername.lengthError}")
private String memberUsername;
@NotEmpty(message = "{memberPassword.empty}")
@Length(min = 6, max = 16, message = "{memberPassword.lengthError}")
private String memberPassword;
在classpath目录下建立校验的消息文件:ValidationMessages.properties
memberUsername.empty = \u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002
memberUsername.lengthError = bbb
memberPassword.empty = ccc
memberPassword.lengthError =ddd
消息文件的key与校验规则中注解的参数保持一致。在控制器中使用校验器:
@Controller
public class MemberRegisterController extends BaseMemberOperationController {
@RequestMapping(value = "/register.html", method = { RequestMethod.GET })
public ModelAndView memberRegister(Model model) {
if (!model.containsAttribute("contentModel")) {
model.addAttribute("contentModel", new MemberRegisterDto());
}
return new ModelAndView("register", model.asMap());
}
@RequestMapping("/membercenter.html")
public ModelAndView memberCenter() {
return new ModelAndView("membercenter");
}
@RequestMapping(value = "/register.html", method = { RequestMethod.POST })
public ModelAndView memberRegister(
Model model, //校验结果通过model传入结果页面
@Valid @ModelAttribute("contentModel") MemberRegisterDto memberRegisterDto, //@ModelAttribute的值与页面中spring form标签的modelAttribute相对应
BindingResult result) { //spring完成校验后自动保存在result中
if (result.hasErrors()) {
return memberRegister(model);
} else {
return memberCenter();
}
}
form页面使用spring标签显示error:
username:
password: