2

我有以下问题,有一个带有一些验证相关注释的常规弹簧模型(我们称之为“A”)。接下来,有一个命令对象(定义一些字段的常规 POJO 类,其中一个是类型 A 的对象)。命令对象实现了 Validator 接口,以便在控制器方法中进行绑定和验证。

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

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

4

2 回答 2

7

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

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

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

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

Spring MVC 验证器注解 + 自定义验证

然后,您应该只依赖休眠验证和 JSR303。

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

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

希望这可以帮助。

最好的问候,亚历山大

于 2015-03-14T17:51:43.250 回答
0

看看这可能会对您 同时使用 JSR-303 和传统 Bean 验证有帮助吗?. 我已经给出了一个使用自定义注释对模型进行自定义验证的示例。

于 2013-05-20T11:55:00.647 回答