Valid验证
在以前都是自己进行判断传到后端的表单数据是否符合要求,现在可以使用Springboot自带的一个参数验证方法Valid。第一步导入依赖,第二步在实体字段上面添加需要验证规则,第三步配置全局异常处理,第四步在Controller方法的形参前面添加@valid注解。根据上述的操作,就可以验证前端通过json方式传来的参数是否符合我们定义的规则。
- 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- 定义规则:
/**
* 设备编号
*/
@NotNull(message = "不能为null")
@NotBlank(message = "不能为空串")
private String deviceId;
- 全局异常处理:
@RestControllerAdvice(basePackages = "com.simon.excelTest.controller")
public class ExceptionControllerAdvice {
/**
* json方式
* @param e
* @return
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, Object> MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
List<ObjectError> errors = e.getBindingResult().getAllErrors();
StringBuffer errorMsg = new StringBuffer();
errors.stream().forEach(x -> {
errorMsg.append(x.getDefaultMessage()).append(";");
});
Map<String, Object> respMap = new HashMap<>(4);
respMap.put("code", -1);
respMap.put("msg", errorMsg);
return respMap;
}
}
- 添加注解:
/**
* 新增一条记录
* @param cdzsDevice
* @return
*/
@GetMapping("insert")
public ResultVo insert(@Valid CdzsDevice cdzsDevice){
return new ResultVo(200,"ok",cdzsDeviceService.save(cdzsDevice));
}
验证结果:
我规则定义的是,deviceId不能为Null并且不能为空字符串,然后我添加的时候没有添加deviceId字段,所以就抛出异常了。