如何使用@Email hibernate验证器占位符

时间:2012-01-28 23:56:51

标签: spring-mvc validation hibernate-validator

默认情况下,org.hibernate.validator.constraints.Email会显示not a well-formed email address,但如果用户只需输入格式良好的电子邮件foo is not a well-formed email address,我就会显示foo。所以我需要一个foo的占位符。我的域对象中的属性使用@Email进行注释。

我的资源包文件中有Email = {0} is not a well-formed email address,当用户为电子邮件字段输入email is not a well-formed email address时显示foo

是否可以生成输入的值并显示错误消息?

我正在使用Hibernate 3.5和Spring MVC 3。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您正在使用Hibernate Validator作为Bean验证提供程序,则可以使用4.2版中引入的ValueFormatterMessageInterpolator。为此,只需在检索Validator时设置插值器,例如像这样:

Configuration<?> configuration = Validation.byDefaultProvider().configure();

Validator validator = configuration
    .messageInterpolator(new ValueFormatterMessageInterpolator(
        configuration.getDefaultMessageInterpolator()))
    .buildValidatorFactory()
    .getValidator();

使用该插补器,您可以在错误消息中通过占位符{validatedValue}引用经过验证的值:{validatedValue} is not a well-formed email address

您可以在HV reference guide中找到更多信息。