gpt4 book ai didi

java - Spring - 混合注释和基于 validator 的验证

转载 作者:行者123 更新时间:2023-11-29 06:38:21 25 4
gpt4 key购买 nike

我有以下问题,有一个常规的 Spring 模型(我们称之为“A”),带有一些与验证相关的注释。接下来,有一个命令对象(定义一些字段的常规 POJO 类,其中之一是类型 A 的对象)。命令对象实现 Validator 接口(interface),使绑定(bind)和验证在 Controller 方法中工作。

问题是,如何在命令对象中使用注解配置的验证(假定它实现了 Validator 接口(interface),因此它具有 supports() 和 validate() 方法)。

我想要实现的目标是对可重用的模型进行基本验证,并与系统其他部分的一些更重的业务逻辑验证混合。

最佳答案

我遇到了完全相同的问题。我想对“简单的事情”使用自动注释验证,然后将复杂的验证逻辑传递给我的自定义 spring Validator。但是每当我设置 Controller validator 时,所有 hibernate 的验证都会停止工作,如本教程末尾所述:

http://www.captaindebug.com/2011/07/applying-custom-spring-validator-to.html#.VQR0OI7F-gd

This technique should be used when you need to do ALL your controller’s validation yourself, and you can’t or don’t want to make use of the Hibernate’s reference implementation of a JSR 303 validator. From this, you’ll guess that you can’t mix your own custom Spring validator with Hibernate’s JSR 303 validator. For example, adding the built-in annotations to the Address command object will have no effect:

您应该忘记旧式 Spring Validator 并删除“setInitBinder()”,如相关问题中所述:

Spring MVC validator annotation + custom validation

然后您应该只依赖 hibernate 验证和 JSR303。

要向您的类(模型)添加复杂的验证,假设您要检查两个日期字段 - 在类级别使用自定义注释约束,如下面的链接所述。

https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/validator-customconstraints.html#section-class-level-constraints

希望这对您有所帮助。

最好的问候,亚历山大

关于java - Spring - 混合注释和基于 validator 的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com