1.配置pom.xml
<!-- validator1 -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.3.1</version>
</dependency>
<!-- validator2 -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
<!-- validator3 -->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.4.1.Final</version>
</dependency>
<!-- validator4 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
2.配置servlet-context.xml
<!-- Validator -->
<annotation-driven validator="validator"/>
<beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<beans:property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</beans:bean>
3.测试类
以注册qq为例。
import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
public class QQ {
@NotBlank
@NotNull
@Pattern(regexp="\\w{4,10}" , message="nick must be 4-10 chars or numbers.")
private String nick;
@NotNull
@Pattern(regexp="\\w{3,20}" , message="password must be 3-20 chars or numbers")
private String password;
@NotNull
@Min(value=1, message="age too young")
@Max(value=150, message="age too old")
private Integer age;
@NotBlank
@NotNull
@Email(message="email can not be blank.")
private String email;
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
controller
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import com.cuts.siled.service.impl.entity.QQ;
@Controller
public class TestValidatorController {
@RequestMapping("validator")
public String show() {
return "registQQ";
}
@RequestMapping("doRegist")
public String registHandler(@Valid QQ qq, BindingResult result) {
if (result.hasErrors()) {
for (FieldError error : result.getFieldErrors()) {
String filedName = error.getField();
String msg = error.getDefaultMessage();
System.out.println(filedName + ":" + msg);
}
return "registQQ";
}
return "success";
}
}
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>regist QQ</title>
</head>
<body>
<form action="doRegist" method="post">
<table>
<tr>
<td>姓名:<input type="text" name="nick" placeHolder="请输入4-10位字母或数字跟下划线组合"></td>
</tr>
<tr>
<td>密码:<input type="password" name="password" placeHolder="请输入3-20位数字、字母、下划线组合"></td>
</tr>
<tr>
<td>年龄:<input type="text" name="age" placeHolder="请输入正确的年龄"></td>
</tr>
<tr>
<td>邮箱:<input type="text" name="email" placeHolder="请输入邮箱"></td>
</tr>
<tr>
<td><input type="submit" value="提交" ><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
