bug日记(日常更新)

tech2023-03-01  84

 

目录

项目场景:后端校验表单数据

问题描述:使用@Valid校验失效

原因分析:Spring 不支持校验Json数据

解决方案:当前使用的是自定义工具类


项目场景:后端校验表单数据

提示:联动地址数据信息回显时,地址绑不上 例如:项目场景:示例:通过蓝牙芯片(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; }

 

最新回复(0)