1

我已经实现了一个带有休眠和休眠验证的bean。这是我正在测试的领域。

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

我有一个文件

消息属性

 messages_en.properties

我使用的。Spring.message 标签起作用,因此可以找到文件并在系统的其他地方使用。当我尝试在messages.properties中存储该字段为空而不是错误消息的对象时,我得到“test.test”作为我的验证错误。我错过了什么?

4

3 回答 3

2

您应该通过用花括号括起来的键名来尝试这样做。此语法与本地化文件中的 Java 不同。紧随其后的是 Spring/Hibernate Validation thru Validation API。

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

于 2013-10-24T14:29:45.110 回答
1

问题是我在我的配置中缺少这个。message="{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>
于 2013-10-29T11:55:25.337 回答
0

只有以下对我有用:

  1. 使用以下消息属性在 maven 项目的“resources”目录中创建 ValidationMessages.properties:

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

    @NotEmpty(message = "{app.validation.notempty.msg}")
    private String fieldName;
    
  3. 最终验证如下所示。请注意,我发现提供者 HibernateValidator.class 必须从 .properties 文件中获取值。

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

希望这可以帮助某人。

于 2020-06-06T05:02:07.480 回答