Java注解表单验证

使用javax.validation注解, 实现表单验证

使用

1
2
3
4
5
6
7
8
@RequestMapping("/")
public String index(LoginForm form){
if (!form.verification()) {
return null;
}
// TODO ...
return "index";
}

LoginForm.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

public class LoginForm extends BaseForm {

@NotNull
@Pattern(regexp = "[A-Za-z0-9]{1,32}")
private String username;

@NotNull
@Pattern(regexp = "[A-Za-z0-9]{32}")
private String password;


public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

BaseForm.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import org.hibernate.validator.HibernateValidator;
import javax.validation.Validation;
import javax.validation.Validator;

public abstract class BaseForm {

private final static Validator validator = Validation
.byProvider(HibernateValidator.class).configure()
.failFast(true).buildValidatorFactory().getValidator();

public boolean verification() {
return validator.validate(this).size() == 0;
}
}

主要的几个注解

1
2
3
4
5
6
7
8
9
10
@DecimalMax
@DecimalMin
@Digits
@Future
@Max
@Min
@NotNull
@Past
@Pattern
@Size