2013-05-20 148 views
1

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

的问题是,如何利用该命令对象内部注解配置验证的(给定它实现验证程序接口,因此它具有支承件()和验证()方法)。

我试图才达到是有被重用,与系统的其他部分的一些较重的业务逻辑验证的混合模型基本验证。

回答

6

我有完全相同的问题。我想对“简单的事情”使用自动注释验证,然后将复杂的验证逻辑传递给我的自定义弹簧验证器。但每当我设置控制器的验证,所有的Hibernate的验证停止工作,因为在本教程的最后描述:

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

这种技术时,你需要做的所有的 控制器的验证,应使用你不能或不想让 使用Hibernate的JSR 303 验证器的参考实现。 由此看来,你会猜,你不能使用Hibernate的JSR 303验证调配自己的自定义 春天验证。例如, 添加内置注释地址命令对象将 没有任何效果:

你应该忘记老式弹簧验证,并删除“setInitBinder()”作为此相关的问题描述:

Spring MVC validator annotation + custom validation

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

要在复杂的验证添加到您的类(模型),说要检查两个日期字段 - 使用自定义的注释约束的一流水平,如下面的链接描述。

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

希望这有助于。

最好的问候, 亚历山大

0

一次看这可能这个帮助你 Using both JSR-303 and Traditional Bean Validation?。在那里我给出了一个使用自定义注释为模型进行自定义验证的例子。

+0

是啊,我见过的链接(从问题接受你挂) - http://blog.trifork.com/2009/08/04/bean-validation-然而,集成-jsr-303-with-spring /之前,我无法让它工作。使用的代码比当前实现旧,API已更改。将这两种验证方法合在一起可能有新的方法。 – WTK