springMVC注解式校验
使用步骤:
1.搭建好springMVC工程,并能正常访问其中任何一个方法。
2.添加hibernate-validator-4.3.0.Final-dist.zip,validation-api-1.1.0.Alpha1.jar到lib文件夹下,如果是maven工程,则需要添加此jar包依赖。
3.在要进行校验的javaBean上添加注解
private static final long serialVersionUID = 1L;
@Length(min = 6, max = 18, message = "用户名称只能是6-18位")
private String username;
@Pattern(regexp = "^[A-Za-z0-9]{6,18}$", message = "密码只能是6-18位")
private String password;
@Max(value = 60, message = "年龄只能小于或等于60岁")
@Min(value = 18, message = "年龄只能大于或等于18岁")
private Integer age;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Past(message = "生日只能是今天之前的")
private Date birth;
@Email(regexp = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$", message = "邮箱地址不正确,例如:ddd@ddd.com")
private String email;
4.在controller中的方法中必须添加一个入参是Errors,此对象封装了校验的错误信息,要使校验起作用还必须添加@valid注解,注解才能起作用
@RequestMapping("/test")
public String test(@Valid @ModelAttribute("user") User user, Errors errors) {
System.out.println("test...");
System.out.println(user + " 前");
if (errors.hasErrors()) {
System.out.println("出错了!!!");
return "login";
} else {
System.out.println(user + " 后");
return "success";
// return "forward:login"; //请求转发
// return "redirect:login";//重定向
}
}
5.在页面中使用spring提供的一套标签来获取错误信息
<form:form commandName="user" action="user/test">
用户名称:<form:input path="username"/> <form:errors path="username" cssClass="errorClass" /><br>
用户口令:<form:password path="password"/><form:errors path="password" cssClass="errorClass" /><br>
用户年龄:<form:input path="age"/><form:errors path="age" cssClass="errorClass" /><br>
用户生日:<form:input path="birth"/><form:errors path="birth" cssClass="errorClass" /><br>
用户邮箱:<form:input path="email"/><form:errors path="email" cssClass="errorClass" /><br>
<input type="submit" value="提交2">
</form:form>
注意:不能写一个按钮或超链接等前端技术直接跳到错误信息提示页面,否则校验失效,应该先让跳进任何一个方法,然后从方法中再跳回此页面,目的就是为了创建校验对象。
@RequestMapping("/index")
public String test(@ModelAttribute("user") User user) {
System.out.println("test...");
System.out.println(user);
return "login";
}
至此校验完成!
created by 杜丹东