目录
项目场景:后端校验表单数据
提示:联动地址数据信息回显时,地址绑不上
例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)
问题描述:使用@Valid校验失效
@PostMapping("/insert")
public BaseResult insert(@Valid @RequestBody BaseConfigParam param) {
try {
baseConfigService.insert(param);
return BaseResult.success();
} catch (Exception e) {
e.printStackTrace();
return BaseResult.fail(e.getMessage());
}
}
原因分析:Spring 不支持校验Json数据
Spring 不支持校验Json数据,所以这里@Valid和@RequestBody连用是没有效果的。
解决方案:当前使用的是自定义工具类
目前使用的是自定义的工具类
查资料有提供的方法如下:
方法2:
@RequestMapping("/sender/message")
@ResponseBody
public ResponseBean sendMessage(@Valid @RequestBody Message messageBean){
......
......
}
在此Controller中添加如下方法:
使用@ExceptionHandler捕获错误信息:
// valid exception
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public ResponseBean handleMethodArgumentNotValidException(
MethodArgumentNotValidException ex) {
BindingResult bindingResult = ex.getBindingResult();
String errorMesssage = "Invalid Request:";
for (FieldError fieldError : bindingResult.getFieldErrors()) {
errorMesssage += fieldError.getDefaultMessage() + ", ";
}
System.out.println(bindingResult.getFieldError().getDefaultMessage());
ResponseBean response = new ResponseBean();
response.setErrcode("-11");
response.setErrmsg(errorMesssage);
return response;
}
// JSON convert exception
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseBody
public ResponseBean handleHttpMessageNotReadableException(
HttpMessageNotReadableException ex) {
ResponseBean response = new ResponseBean();
response.setErrcode("-22");
response.setErrmsg("json convert failure!");
return response;
}