目录
项目场景:后端校验表单数据
问题描述:使用@Valid校验失效
原因分析:Spring 不支持校验Json数据
解决方案:当前使用的是自定义工具类
提示:联动地址数据信息回显时,地址绑不上 例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)
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; }