我已经用休眠和休眠验证实现了一个bean。这是我正在测试的领域。
@NotBlank(message ="test.test" )
private String test;
我有一个文件
messages.properties
和
messages_en.properties
我使用的。使用Spring.message标签可以找到文件并在其他地方的系统中使用。当我尝试将对象存储为该字段为空而不是messages.properties中的错误消息时,出现“ test.test”作为验证错误。我想念什么?
您应该这样尝试,用大括号括住键名。此语法与Java本地化文件不同。随后是通过Validation API的Spring / Hibernate Validation。
@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();
希望这对某人有帮助。