BindingResult中拦截不到错误

问题描述

采用JSR303规范的validation库进行后端验证,但是使用BindingResult对象后却获取不到错误信息
局部代码如下:

@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	@TableId
	private Long brandId;

	@NotEmpty
	@NotBlank(message = "品牌名不能为空")
	private String name;
}
@RequestMapping("/save")
public R save(@Valid @RequestBody BrandEntity brand, BindingResult result) {
    if (result.hasErrors()) {
        Map<String, String> map = new HashMap<>();
        result.getFieldErrors().forEach((item)->{
        String message = item.getDefaultMessage();
        String field = item.getField();
        map.put(field, message);
    });
        return R.error(400, "提交数据不合法").put("data", map);
    } else {
        brandService.save(brand);
        return R.ok();
    }
}
解决方案

仔细排除后发现实际代码并没有什么问题,debug后也发现result对象中的errors字段中并没有获取到错误对象,最后通过修改pom文件中的依赖解决了这种问题,在pom中应包含有如下两个依赖,缺一不可,我就是漏了hibernate-validator导致的错误

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>7.0.0.Alpha3</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我徐先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值