簡體   English   中英

Hibernate 驗證器不使用屬性文件。

[英]Hibernate validator doesn't use properties file.

我已經實現了一個帶有休眠和休眠驗證的 bean。 這是我正在測試的領域。

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

我有一個文件

消息.屬性

 messages_en.properties

我使用的。 Spring.message 標簽起作用,因此可以在系統的其他地方找到並使用這些文件。 當我嘗試在messages.properties 中存儲該字段為空而不是錯誤消息的對象時,我得到“test.test”作為我的驗證錯誤。 我錯過了什么?

您應該通過用花括號括起鍵名來嘗試這樣做。 此語法與本地化文件中的 Java 不同。 緊隨其后的是通過驗證 API 進行的 Spring/Hibernate 驗證。

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

問題是我的配置中缺少這個。 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>

只有以下對我有用:

  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();

希望這可以幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM