Spring MVC数据校验;Validator 接口@Validated注解

声明,使用 JDK8 、spring5.0.7 、idea2018.2

Spring MVC 提供了两种数据校验的方式:

基于 Validator 接口
使用 Annotaion JSR-303 标准进行校验

基于 Validator 接口的方式需要自定义 Validator 验证器,每一条数据的验证规则需要自己手动完成;使用 Annotaion JSR-303 标准则不需要自定义验证器,通过注解的方式可以直接在实体类中添加每个属性的校验规则,这种方式更加方便,实际开发中推荐使用。
Annotaion JSR-303标准参考:
https://blog.csdn.net/weixin_42323802/article/details/84000994

基于 Validator 接口

主要步骤为:
1、自定义校验器 StudentValidation,实现 Validator 接口
2、编写Controller 、对业务逻辑判断;
3、jsp页面通过form表单的post发送请求;
子模块目录结构如下:

水电费


model实体类;

public class Student {
   
    private String name;
    private String password;
}
/**
 * @auther SyntacticSugar
 * @data 2018/11/16 0016下午 10:46
 *    自定义 校验器StudentValidator;
 */
public class StudentValidator implements Validator{
   
     @Override
    public boolean supports(Class<?> clazz) {
   
        return Student.class.equals(clazz);
    }
 	 @Override
    public void validate(Object target, Errors errors) {
   
        // TODO Auto-generated method stub
        ValidationUtils.rejectIfEmpty(errors, "name", null, "姓名不能为空"); 
        ValidationUtils.rejectIfEmpty(errors, "password", null, "密码不能为空");
    }
}

控制器 HelloHandler,业务方法 login 参数列表中的 @Validated 表示参数 student 是需要校验的对象,@BindingResult 用来存储错误信息,两者缺一不可,而且必须挨着写,中间不能有其他参数。

/**
 * @auther SyntacticSugar
 * @data 2018/11/16 0016下午 10:51
 */
@Controller
public class HelloHandler {
   
    @GetMapping("/login")
    public String login(Model model) {
   
        model.addAttribute(new Student());
        return "login";
    }
    //  校验结果  BindingResult
    @PostMapping("/login")
    public String login(@Validated Student student, BindingResult bindingResu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值