SpringMVC 案例七:请求参数验证——分组

SpringMVC 案例七:请求参数验证——分组

  1. 在pojo中定义校验规则,而pojo是被多个controller所共用的,当不同的controller方法对同一个
    pojo进行校验,但是每个controller方法需要不同的校验(例如:登录和注册的验证规则不同)
  2. 分别为登录和注册验证各建立一个分组接口
public interface UserLoginGroup {
}

public interface UserRegistGroup {
}
  1. 在用户类的验证注解中添加分组属性
public class User {	
	private Integer id;
	
	@NotBlank(message="用户名不能为空",groups= {UserLoginGroup.class,UserRegistGroup.class})
	private String username;
	
	@NotNull(message="密码不能为空",groups= {UserLoginGroup.class,UserRegistGroup.class})
	@Pattern(regexp="^\\d{3,}$",message="密码最少为3位",groups= {UserLoginGroup.class,UserRegistGroup.class})
	private String password;
	
	@DateTimeFormat(pattern="yyyy-MM-dd")
	@Past(message="日期必须为过去的日期",groups= {UserRegistGroup.class})
	@NotNull(message="生日不能为空",groups= {UserRegistGroup.class})
	private Date birthday;
	
	private Integer age;
}
  1. 分别在login和regis方法中添加分组校验
    在controller方法中使用指定分组的校验
    i)在@Validated中添加value={ValidGroup1.class}表示该方法使用了ValidGroup1分组校验规则
    ii)可以指定多个分组,中间用逗号分隔
@RequestMapping("login")
public String login(@Validated(value= {UserLoginGroup.class}) User user,BindingResult result,Model model) {
	if(result.hasErrors()) {
		model.addAttribute("errors", result.getFieldErrors());
		return "forward:/login.jsp";
	}
}

@RequestMapping("regist")
public String regist(@Validated(value= {UserRegistGroup.class}) User user,BindingResult result,Model model) {
	if(result.hasErrors()) {
		model.addAttribute("errors", result.getFieldErrors());
		return "forward:/login.jsp";
	}
	return "";
}
  1. 在地址栏中输入地址,分别测试(设置断点调试)
    1)http://localhost:8089/user/login.action?username=tom&password=111(成功)
    2)http://localhost:8089/user/regist.action?username=tom&password=111(失败)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值