vla*_*hel 5 java constraints spring-mvc hibernate-validator
我有一个使用休眠验证器进行验证的 Spring Web 应用程序。我有位于不同项目中的约束注释。我需要在我的 spring 项目中为这些约束设置验证器,因为我需要一些服务来执行验证。所以情况是:我不能将我的约束验证器放在 @Constraint(validatedBy = MyConstraintValidator.class) 中,因为验证器在不同的项目中,我不能添加依赖,因为这会创建循环依赖,这不是我们的方式想要它。我注意到 javax.constraints 没有指定验证器,它只是 @Constraint(validatedBy= {})。但是休眠验证器仍然知道如何验证它们。有没有办法告诉我的休眠验证器如何在不指定约束验证器的情况下验证我的约束?
我希望能够验证这个约束:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Constraint(validatedBy = {})
public @interface OneOf {
String message() default "{OneOf}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
将javax.validation.constraints验证器留给实现。Hibernate 为这些约束提供了验证器,并在引导时注册它们。
您可以通过 XML 设置验证器,而无需使用@Constraint(validatedBy = { }). 但是,这通常用于添加或替换为您自己的验证器。我不确定它将如何帮助您,因为您仍然需要引用约束验证器。
使用 XML 约束定义的示例:
<constraint-definition annotation="org.mycompany.CheckCase">
<validated-by include-existing-validators="false">
<value>org.mycompany.CheckCaseValidator</value>
</validated-by>
</constraint-definition>
Run Code Online (Sandbox Code Playgroud)
请参阅:通过 XML 配置
即将发布的 5.2 版本提供了更多方法,例如使用服务加载器或实现ConstraintDefinitionContributor. 请参阅:提供约束定义
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |