为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2021-09-03 16:53:19
我一直在尝试通过“JSR-303”验证其余请求的数据,代码如下-:*pojo 注释级别@NotNull(message="Carrier ID cannot be null")    private String carrier;*MessageStatusDoc 类@Idprivate String transactionId;private String status;private Key key;private AccountDetail accountDetail;*调用方法saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)关键类包含载体字段任何人都可以建议为什么我无法捕捉到错误..?PS,当我尝试记录时,该值在控制台上打印为空值..
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您提供的代码看起来不错。尽管您没有提供控制器注释。例如


@PostMapping

public void saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)

不过一定要加


    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-validation</artifactId>

    </dependency>

到您的 pom 文件(至少对于 Spring Boot >= 2.3.0)。这将包括验证 api 以及执行实际验证工作的休眠验证器。


此外,如果在外部包中有注释尽量不要混合


    <dependency>

        <groupId>jakarta.validation</groupId>

        <artifactId>jakarta.validation-api</artifactId>

    </dependency>


    <dependency>

        <groupId>javax.validation</groupId>

        <artifactId>validation-api</artifactId>

    </dependency>

希望这可以帮助!


查看完整回答
反对 回复 2021-09-03
?
临摹微笑

TA贡献1982条经验 获得超2个赞

这是示例。


我假设下面的课程是您的 MessageStatusDoc。


承运人领域是您验证的需要。


public class MessageStatusDoc {


        @Id

        private String transactionId;


        private String status;


        private Key key;


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

        private String carrier;


        //getter setter

}

这是使用 MessageStatusDoc 作为参数的方法


public void saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc) {

   //nothing to do for now

}

如果你像给定的例子那样做得很好,那么如果任何方法调用 saveMessage 方法但 messageStatusDoc 参数的载体字段为空,那么验证将抛出异常。


和结束。我有个问题。你能提供所有代码吗?


查看完整回答
反对 回复 2021-09-03
?
慕慕森

TA贡献1856条经验 获得超17个赞

如果您在 getter 级别而不是在字段声明级别使用注释,这将得到解决。


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信