对于其余请求,验证在 Spring Boot 中不起作用

我一直在尝试通过“JSR-303”验证其余请求的数据,代码如下-:


*pojo 注释级别


@NotNull(message="Carrier ID cannot be null")

    private String carrier;

*MessageStatusDoc 类


@Id

private String transactionId;


private String status;


private Key key;


private AccountDetail accountDetail;

*调用方法


saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)

关键类包含载体字段


任何人都可以建议为什么我无法捕捉到错误..?


PS,当我尝试记录时,该值在控制台上打印为空值..


慕丝7291255
浏览 171回答 3
3回答

达令说

您提供的代码看起来不错。尽管您没有提供控制器注释。例如@PostMappingpublic void saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)不过一定要加&nbsp; &nbsp; <dependency>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>org.springframework.boot</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>spring-boot-starter-validation</artifactId>&nbsp; &nbsp; </dependency>到您的 pom 文件(至少对于 Spring Boot >= 2.3.0)。这将包括验证 api 以及执行实际验证工作的休眠验证器。此外,如果在外部包中有注释尽量不要混合&nbsp; &nbsp; <dependency>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>jakarta.validation</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>jakarta.validation-api</artifactId>&nbsp; &nbsp; </dependency>和&nbsp; &nbsp; <dependency>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>javax.validation</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>validation-api</artifactId>&nbsp; &nbsp; </dependency>希望这可以帮助!

临摹微笑

这是示例。我假设下面的课程是您的 MessageStatusDoc。承运人领域是您验证的需要。public class MessageStatusDoc {&nbsp; &nbsp; &nbsp; &nbsp; @Id&nbsp; &nbsp; &nbsp; &nbsp; private String transactionId;&nbsp; &nbsp; &nbsp; &nbsp; private String status;&nbsp; &nbsp; &nbsp; &nbsp; private Key key;&nbsp; &nbsp; &nbsp; &nbsp; @NotNull(message="Carrier ID cannot be null")&nbsp; &nbsp; &nbsp; &nbsp; private String carrier;&nbsp; &nbsp; &nbsp; &nbsp; //getter setter}这是使用 MessageStatusDoc 作为参数的方法public void saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc) {&nbsp; &nbsp;//nothing to do for now}如果你像给定的例子那样做得很好,那么如果任何方法调用 saveMessage 方法但 messageStatusDoc 参数的载体字段为空,那么验证将抛出异常。和结束。我有个问题。你能提供所有代码吗?

慕慕森

如果您在 getter 级别而不是在字段声明级别使用注释,这将得到解决。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java