[英]How to include “#” in properties file. '\#' escape doesn't work
[英]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>
只有以下對我有用:
使用以下消息屬性在 Maven 項目的“資源”目錄中創建 ValidationMessages.properties:
app.validation.notempty.msg=must be populated
然后,在 dto 類中:
@NotEmpty(message = "{app.validation.notempty.msg}") private String fieldName;
最后驗證如下。 請注意,我發現提供程序 HibernateValidator.class 必須從 .properties 文件中獲取值。
ValidatorFactory factory = Validation.byProvider( HibernateValidator.class ) .configure() .buildValidatorFactory(); Validator validator = factory.getValidator();
希望這可以幫助某人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.