bug日记(日常更新)

 

目录

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

问题描述:使用@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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值