spring mvc验证分组

标签(空格分隔): springmvc验证分组


使用注解方式校验,
以下为bean的代码片段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Table(name = "user1")
@Component
public class {
@Id
@Column(name = "uid1")
@GeneratedValue
private Integer uId;
@NotEmpty(message = "请输入昵称", groups = {User.regist.class})
private String uName;
@NotEmpty(message = "邮箱不能为空", groups = {User.login.class,User.regist.class})
@Email(message = "邮箱格式不正确", groups = {User.login.class,User.regist.class})
private String uEmail;
@NotEmpty(message = "密码不能为空", groups = {User.login.class,User.regist.class})
@Length(min = 8, max = 16, message = "密码长度必须为8-16位", groups = {User.login.class,User.regist.class})
private String uPassword;
...省略get set 等方法
public interface login{};
public interface regist{};

如上:利用注解中的groups属性为该注解指定分组,我们在该bean中定义了两个内部接口作为分组。两个分组分别为:User.login.class,User.regist.class。

在controller中验证时,可以为需要验证的bean选择分组注解。

1
2
3
4
5
6
7
8
9
10
11
12
13
@RequestMapping(value = "/logging", method = RequestMethod.POST)
public String login(@ModelAttribute("user") @Validated(User.login.class) User user, BindingResult result, Errors errors, HttpSession session) {
此处省略N行代码
...
}
//注册
@RequestMapping(value = "/registing", method = RequestMethod.POST)
public String regist(@ModelAttribute("user") @Validated(User.regist.class) User user, BindingResult result, @ModelAttribute("uQrpassword") String uQrpassword) {
此处省略N行代码
...
}

我们需要用到@Validated()注解来为参数添加验证,@Validated(User.login.class)则不仅为参数添加了验证,还指定了验证分组为User.login.class。当指定验证分组groups为 User.login.class 时,验证时只会验证groups属性包含User.login.class的注解。