使用springboot框架做表单后台验证

本文介绍了一种在实体类中使用注解进行数据校验的方法,并详细展示了如何通过分组来实现不同场景下的多种校验规则。同时,还介绍了如何在Controller层启用校验并处理校验结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在实体类中添加校验规则
@notNull 不能为null
@notEmpty 不能为空字符串
@NotBank 不能为null和空字符串
@pattern 正则验证

	@NotBlank(message="用户名不能位空",groups= {RegisterValidate.class})
	@Pattern(regexp="[\\u4e00-\\u9fa5\\w]{3,18}" ,message="用户名必须3-18位的中文或者数字字母下划线",groups= {RegisterValidate.class})
	private String username;
	
	@NotBlank(message="密码不能为空",groups= {RegisterValidate.class})
	@Pattern(regexp="[a-zA-Z][\\w!@#~$%^&*\\(\\)]{5,17}" ,message="密码必须6-18位 且以字母开头",groups= {RegisterValidate.class})
	private String password;
	
	@NotBlank(message="手机号不能为空",groups= {RegisterValidate.class})
	@Pattern(regexp="1[34578]\\d{9}" ,message="请输入正确的手机号",groups= {RegisterValidate.class})
	private String tel;

2.controlle层开启对对象的校验
对传入的实体参数前添加@validated,并加入参数BindingResult,用于封装校验的结果

/**
	 *   对注册界面的后台校验
	 * 
	 *    @Validated  开启对SUser实体的校验
	 *    BindingResult  封装了数据校验的结果
	 * @param user
	 * @param result
	 * @return
	 */
	@RequestMapping("validate")
	public ModelAndView validate(@Validated(value=RegisterValidate.class) SUser user,BindingResult result,
			ModelMap modelmap ) {
		System.out.println("-----------"+user);
		//用于数据回显
		modelmap.addAttribute("user", user);
		//FieldError封装了一个属性的 错误信息
		//多个属性的错误信息就是List集合
		
		List<FieldError> errorList = result.getFieldErrors();  
		
		//判断 数据校验到底有没有错误
				if (result.hasErrors()) {

					for (FieldError fieldError : errorList) {
						System.out.println(fieldError.getField() + "-->"
								+ fieldError.getDefaultMessage());
						// 错误信息 存到 域对象中
						modelmap.addAttribute("error_" + fieldError.getField(),
								fieldError.getDefaultMessage());
					}
					// 错误信息应该要显示到界面上
					return new ModelAndView("/Register");

				}
				
			
			//生成注册时间
			Date d = new Date();
			//将注册时间添加到SUser对象
			user.setUserRegtime(d);
			
			String uuid =uuid();
			
			user.setUserid(uuid);
			
			//刷新user对象
			modelmap.addAttribute("user", user);
			
			// 调用业务逻辑保存用户
			int row = userser.addUser(user);
		return new ModelAndView("/tips");
		
	}

3.如果一个实体在一个项目中有多套校验规则,就需要对校验规则进行分组
3.1定义一个接口 分组接口
3.2在实体类中声明 该组验证对哪组有效,添加group={接口名.Class}
3.3 在controller层,@validated中添加value={接口名.Class}
该接口里面什么也不用写

public interface RegisterValidate {

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值