有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate验证程序不使用属性文件。

我已经用hibernate和hibernate验证实现了一个bean。这是我正在测试的领域

@NotBlank(message ="test.test" )
private String test;

我有一份档案

messages.properties

 messages_en.properties

我用的。春天消息标签的作用是,可以找到文件,并在系统的其他地方使用。当我试图在消息中存储一个字段为空且没有错误消息的对象时,我得到了“test.test”作为我的验证错误。财产。我错过了什么


共 (3) 个答案

  1. # 1 楼答案

    问题是我的配置中缺少了这个。还需要消息=“{test.test}”

    <mvc:annotation-driven validator="validator" />   
    
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="messageInterpolator">
            <bean class="org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator">
                <constructor-arg index="0">
                    <bean
                        class="org.springframework.validation.beanvalidation.MessageSourceResourceBundleLocator">
                        <constructor-arg index="0" ref="messageSource" />
                    </bean>
                </constructor-arg>
            </bean>
        </property>
    </bean>
    
  2. # 2 楼答案

    您应该尝试这样做,用大括号括起键名。此语法与本地化文件中的Java不同。然后通过验证API进行Spring/Hibernate验证

    @NotBlank(message="{test.test}") private String test;

  3. # 3 楼答案

    只有下面的内容对我有用:

    1. 创建验证消息。maven项目“resources”目录中的属性,具有以下消息属性:

      app.validation.notempty.msg=must be populated
      
    2. 然后,在dto类中:

      @NotEmpty(message = "{app.validation.notempty.msg}")
      private String fieldName;
      
    3. 最终验证如下所示。请注意我找到了一个提供程序HibernateValidator。类是必须的以从中获取值。属性文件

      ValidatorFactory factory = Validation.byProvider( 
      HibernateValidator.class )
              .configure()
              .buildValidatorFactory();
      Validator validator = factory.getValidator();
      

    希望这对别人有帮助