Spring和JSR 303验证。如何只验证一些属性?

时间:2012-06-15 02:42:52

标签: java spring-mvc bean-validation

我们假设我们有一个注册表单。当表单的某些输入被更改时,我想通过使用对服务器的ajax调用来动态验证其值。是否有机会通过使用JSR 303验证来验证bean的某些特定属性?

注册表单处理程序验证收到的bean就好了,但我想在提交整个bean之前找出检查属性的方法。

直接的方法是创建一个服务器端方法来接收属性名称和值,并根据名称检查值,但我希望有一种方法可以使用已经定义的bean约束。

例如,用户输入了电子邮件地址并向前移动到下一个属性。客户端进行呼叫,服务器方法检查提供的电子邮件是否已存在。如果是这样,它会返回一个错误,我会在客户端显示它。我相信它可能会使注册过程更加灵活和用户友好

任何评论都非常感谢。

1 个答案:

答案 0 :(得分:1)

jsr-303 Validator确实有一个方法来验证一个属性:

<T> java.util.Set<ConstraintViolation<T>> validateProperty(T object,
                                                           java.lang.String propertyName,
                                                           java.lang.Class<?>... groups)

你只需要注入验证器,以便你可以直接使用它,而不是依靠Spring通过将@Valid放在方法参数上来自动调用它。