使用Hibernate Validator在错误消息中包含字段值

时间:2013-11-06 00:17:00

标签: java spring-mvc bean-validation hibernate-validator

我希望包含请求中传递的字段值,以便在验证消息中包含。但整个字符串按原样显示,而不替换字段值。我在这里错过了什么吗?

我使用以下版本: javax.validation - 1.1.0.Final hibernate-validator - 5.0.1.Final

http://beanvalidation.org/1.1/spec/#message-expressions

我的豆类:

@NotNull(message = "custom message for not null")
@Range(message="param1 ${validatedValue} must be within {min} and {max}.", min=0, max=90)
protected Double param1;

范围违规后显示的实际错误消息:

 param1 ${validatedValue} must be within 0 and 90.

我的BV pom文件:

   <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.0.1.Final</version>
        <scope>provided</scope>
    </dependency>

2 个答案:

答案 0 :(得分:1)

EAP 6附带Bean Validation 1.0 / Hibernate Validator 4.2,这些库优先。您可以尝试排除这些容器模块(请参阅例如this post以获取有关如何执行此操作的说明)并打包您自己的依赖项。但请注意,其他模块可能需要容器提供的版本。

答案 1 :(得分:0)

@Gunnar是对的。为了避免jboss加载默认bean验证api,我在web-inf目录下创建了以下xml文件并解决了问题。

的JBoss部署-structure.xml:

 <jboss-deployment-structure>
   <deployment>
   <exclusions>
      <module name="javax.validation.api"/>
      <module name="org.hibernate.validator"/>
    </exclusions>
   </deployment>
 </jboss-deployment-structure>