【问题标题】:Include field value inside error message using Hibernate Validator使用 Hibernate Validator 在错误消息中包含字段值
【发布时间】:2013-11-06 00:16:59
【问题描述】:

我想包含在请求中传递的字段值,以包含在验证消息中。但整个字符串按原样显示,不替换字段值。我在这里有什么遗漏吗??

我正在使用以下版本: 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>

【问题讨论】:

  • 这应该确实有效。您是否(无意)在您的课程上使用了 BV 1.0 实现?你使用什么环境/容器?
  • @Gunnar - 我编辑了我正在使用的 BV 版本的帖子。 Jboss EAP 6.0 是我正在使用的容器。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    jboss-deployment-structure.xml:

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

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2016-11-27
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多