springboot(八)参数检验

26 阅读1分钟

依赖

pom.xml

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

对字段增加验证

pojo.user

@NotBlank

public class User {  
    private Integer id;  

    @NotBlank(message = "username不能为空")  
    private String name;  

    private Integer age;
}

在controller增加参数验证

@Valid

@PostMapping("/insert")  
    public JSONResult insert(@Valid @RequestBody User user) {  
    userService.insert(user);  
    return JSONResult.ok();  
}

测试

请求参数中不带name,发现MethodArgumentNotValidException异常

image.png

针对异常作处理

处理了异常捕获,但是返回给前端信息不明确

exception/GraceExceptionHandler

@ExceptionHandler(MethodArgumentNotValidException.class)  
@ResponseBody  
public JSONResult returnMyCustomException(MethodArgumentNotValidException e){  
    log.error("e:"+e);  
    return JSONResult.errorMsg("error");  
}

断点查找相关错误信息

777.gif

修改exception/GraceExceptionHandler

@ExceptionHandler(MethodArgumentNotValidException.class)  
@ResponseBody  
public JSONResult returnMyCustomException(MethodArgumentNotValidException e){  
    return JSONResult.errorException(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());  
}

再次测试

image.png

image.png