spring boot实现实体类参数自定义校验

安装依赖项


            org.springframework.boot
            spring-boot-starter-validation
        

1、新建实体类

@Data
public class UserEntity {

    private String name;

    private Integer age;
}

2、新建验证类

import com.example.springboot3mqtt.entity.UserEntity;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

public class UserValidator implements Validator {

    //判断当前验证器是否支持该class类型的验证
    @Override
    public boolean supports(Class clazz){
        return clazz.equals(UserEntity.class);//对应的实体类
    }

    //验证逻辑
    @Override
    public void validate(Object target, Errors errors){
        if (target==null){
            errors.rejectValue("","300","用户不得为空");
        }
        UserEntity user=(UserEntity)target;
        if(user.getName()==null || user.getName().isEmpty()){
            errors.rejectValue("name","300","用户名不能为空");
        }
    }
}

3、在控制器中
3.1 首先写入方法
@InitBinder注解的作用是在控制器方法执行之前,先执行有 @InitBinder注解的方法,使用WebDataBinder 把新建的验证规则绑定

@InitBinder
    public void initBinder(WebDataBinder binder){
        binder.setValidator(new UserValidator());//绑定刚才的自定义验证器
    }

3.2 在控制器接口参数中

@PostMapping("/updateUser")
    public String updateUser(@Valid @RequestBody UserEntity user){
        //Validator
        return "OK";
    }

你可能感兴趣的:(spring,boot,java,后端)