使用组和异常排序 Spring 验证

问题描述 投票:0回答:0

我有一个带有 post 方法的控制器,该方法将一些标头作为字符串以及请求正文作为对象。

我想对所有这些使用 spring 验证。我目前有内联标头验证,并且我的请求对象在其所有对象和字段中都有验证注释。我目前正在使用 globalExceptionHandler 来捕获不同的异常,例如 MethodArgumentNotValid 和 ConstraintsViolation。

验证工作完美,但我需要对其进行一些排序,我更愿意:

1. headers 验证 2.一般请求验证(非空非空) 3.详细的请求验证(图案和尺寸)

我见过人们使用验证注释中的 groups 字段对验证进行分组,并在他们选择的接口上使用 @GroupSequence 注释创建序列。我想实现这种类型的东西,但它似乎只有在使用 ValidatorFactory 和 validator.validate 时才有效,除了例外情况之外。

如有任何帮助,我们将不胜感激。

我可以采取繁琐的路线,按优先级对所有消息进行排序,然后对它们进行排序,但我希望此解决方案能够扩展到具有不同错误集的多个项目。

我目前在我的控制器类上有 @Validated 和 @GroupSequence({Controller.class, headers.class, request1.class, request2.class}) ,然后内联我的标头有 @NotBlank ,我的对象有 @Valid 。然后在我的对象中,我有@valid用于我的级联对象以及各种不同的验证。验证有效,只是不按照组序列中指定的顺序进行。我仍然可以到达最后一组验证,但第一层出现错误。

使用 hibernate.validator 版本 5.2.4.final。

java spring-boot hibernate controller spring-validation
© www.soinside.com 2019 - 2024. All rights reserved.