public interface GroupA {}
public interface GroupB {}
public interface GroupC {}
@GroupSequence({GroupA.class,GroupB.class,GroupC.class})
public interface Group {}
public interface LoginReg {}
public interface RegisterReg {}
// 定义了6个接口,只是空接口,其中LoginReg和RegisterReg用于分组,GroupABC用于排序,指定了ABC为Group的序列
bean代码省略set/get方法
/**
* 接受登录与注册页面表单vo
* @author yanfei.li
* @date 2017年3月3日
*/
public class UserInfoVO implements Serializable{
private static final long serialVersionUID = 1L;
@NotBlank(message="登录名不能为空",groups={GroupA.class,LoginReg.class})
@Length(min=6,max=32,message="长度在6到32之间",groups={GroupB.class,LoginReg.class})
@Pattern(regexp="[a-zA-Z]{6,32}",message="必须是字母",groups={GroupC.class,LoginReg.class})
private String loginName;
@NotBlank(message="username不为空",groups={RegisterReg.class})
private String userName;
}
controller代码
@RequestMapping("/login")
@ResponseBody
public ModelAndView login(HttpServletRequest request,@Valid UserInfoVO info,BindingResult br) {
if(br.hasErrors()) {
List<FieldError> errors = br.getFieldErrors();
for (FieldError fieldError : errors) {
System.out.println(fieldError.getField() + ":" + fieldError.getDefaultMessage());
}
}
}
如果使用上面的controller,传递一个loginName=44的参数的话,则会输出 两个错误信息
loginName:长度在6到32之间
loginName:必须是字母
顺序校验:
代码做如下修改,就只会输出loginName:长度在6到32之间,一个错误信息
@RequestMapping("/login")
@ResponseBody
public ModelAndView login(HttpServletRequest request,@Validated({Group.class}) UserInfoVO info,BindingResult br) {
if(br.hasErrors()) {
List<FieldError> errors = br.getFieldErrors();
for (FieldError fieldError : errors) {
System.out.println(fieldError.getField() + ":" + fieldError.getDefaultMessage());
}
}
分组校验
只校验loginName属性
@RequestMapping("/login")
@ResponseBody
public ModelAndView login(HttpServletRequest request,@Validated({LoginReg.class}) UserInfoVO info,BindingResult br) {
if(br.hasErrors()) {
List<FieldError> errors = br.getFieldErrors();
for (FieldError fieldError : errors) {
System.out.println(fieldError.getField() + ":" + fieldError.getDefaultMessage());
}
}
自定义校验
自定义枚举值校验:https://www.cnblogs.com/wjqhuaxia/p/12153053.html
参考https://blog.csdn.net/li_yan_fei/article/details/60584409
版权声明:本文为qq_42006894原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。