小编典典

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

spring-mvc

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

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

我要达到的目标是对模型进行基本验证,该模型可以重用并与系统其他部分中的一些较重的业务逻辑验证混合在一起。


阅读 219

收藏
2020-06-01

共1个答案

小编典典

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

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

当您需要自己进行所有控制器的验证,并且您不能或不想使用Hibernate的JSR 303验证器的参考实现时,应使用此技术。
由此,您可能无法将自己的自定义Spring验证器与Hibernate的JSR 303验证器混合使用
。例如,将内置注​​释添加到“地址”命令对象将无效:

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

然后,您应该仅依靠hibernate验证和JSR303。

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

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

希望这可以帮助。

最好的问候

2020-06-01