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();
}
}
此时就可以将校验的错误原因信息返回给前台页面了
