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

问题描述 投票:1回答:3

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

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

我有一个文件

messages.properties

 messages_en.properties

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

java hibernate internationalization hibernate-validator
3个回答
2
投票

您应该这样尝试,用大括号括住键名。此语法与Java本地化文件不同。随后是通过Validation API的Spring / Hibernate Validation。

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


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>

0
投票

仅以下内容对我有用:

  1. 在Maven项目的“资源”目录中使用以下消息属性创建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();
    

希望这对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.