我已经实现了一个带有hibernate和hibernate验证的bean。这是我正在测试的领域。
@NotBlank(message ="test.test" )
private String test;
我有一个文件
messages.properties
和
messages_en.properties
我使用的是。 Spring.message标签工作,因此可以找到文件并在其他地方的系统中使用。当我尝试将该字段的对象存储为空而不是message.properties中的错误消息时,我将“test.test”作为我的验证错误。我错过了什么?
答案 0 :(得分:2)
你应该通过用大括号括起键名来尝试这样做。此语法与本地化文件中的Java不同。接下来是通过Validation API进行Spring / Hibernate验证。
@NotBlank(message="{test.test}")
private String test;
答案 1 :(得分: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>
答案 2 :(得分:0)
只有下面的内容对我有用:
使用以下消息属性在maven项目的“ resources”目录中创建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();
希望这对某人有帮助。