您好,我一直在尝试通过“JSR-303”验证休息请求的数据,代码如下-:
- pojo注解级别
@NotNull(message="Carrier ID cannot be null")
private String carrier;
- 消息状态文档类
@Id
private String transactionId;
private String status;
private Key key;
private AccountDetail accountDetail;
- 调用方法
saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)
包含运营商字段的关键类
有谁能告诉我为什么我不能抓住这个错误吗?
PS当我试图记录它时,该值在控制台上打印为null。
6条答案
按热度按时间kzipqqlq1#
你提供的代码看起来不错。虽然你没有提供你的控制器注解。
但是,请务必添加
到你的pom文件中(至少对于Sping Boot 〉= 2.3.0),这将包括验证API沿着做实际验证工作的hib验证器。
此外,如果注解在外部包中,请尽量不要混合
以及
希望这有帮助!
kqlmhetl2#
下面是一个例子。
我假设下面的类是您的MessageStatusDoc。
承运人字段是您需要验证的。
下面是使用MessageStatusDoc作为参数的方法
如果您像给定的示例那样做得很好,那么如果任何方法调用saveMessage方法,但messageStatusDoc参数的carrier字段为空,则验证将抛出异常。
最后。我有个问题。你能给我所有的代码吗?
bqucvtff3#
如果在getter级别而不是在字段声明级别使用注解,这个问题将得到解决。
t0ybt7op4#
我在添加所有启动器文件后遇到了同样的问题。但是重新启动我的eclipse解决了这个问题。
nnt7mjpx5#
相反,在字段声明级别添加@NotEmpty注解对我很有效。
35g0bw716#
重新启动Eclipse/STS解决了我的问题。