springboot使用@valid,并将结果返回给前台

springboot使用@Valid校验接收的对象,并且将校验信息返回给前台

①首先应该在pom文件中引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

②定义一个用于校验的类,并且使用注解规定属性的校验规则,设置get,set方法

@Data//lombok注解
public class User{
    private Integer id;
    @NotBlank
    private String userName;
    @NotEmpty
    private String passWord;
    @Past
    private LocalDateTime birthday;
    @Range(min=18,max=70)
    private Integer age;
    @Email
    private String email;
    @URL
    private String webUrl;
}

③在程序中使用@valid注解

@RequestMapping("/addUser")
@ResponseBody
public String addUser(@Valid User user){
    //.....逻辑代码
    return "添加成功!";
}

④此时的@valid虽然可以使用,但是前台显示的是默认的错误页面,无法得到准确的信息,所以我们需要自己处理校验异常的情况

@ControllerAdvice
public class ValidException{
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public String validExceptionHander(BindException be){
        List<FieldError> fieldError=be.getFieldErrors();
        StringBuffer stringBuffer=new StringBuffer();
        fieldError.forEach(s->stringBuffer.append("属性:"+s.getField)
                                .append(",校验错误原因:"+s.getDefaultMessage()));
        return stringBuffer.toString();
    }
}

此时就可以将校验的错误原因信息返回给前台页面了

经验分享 程序员 微信小程序 职场和发展