如何在自定义Webflow Validator类中连接Spring ValidationMessages包?我有一个验证器已实现并正在运行:
public void validateBusinessReferences(BusinessReferencesViewDao businessReferences, Errors errors) {
if (somecondition())) {
errors.rejectValue("name", "validation.message123", "This field is bad.");
}
}
但是我没有来自ValidationMessages.properties文件的消息,而是获得后备默认值This field is bad.
我的所有其他消息和验证都可以正常工作 - 只是这个自定义验证器/自定义消息方案失败了。我怀疑某种类型的Spring配置问题,但我无法隔离它。
答案 0 :(得分:0)
我的理解是ValidationMessages.properties
用于在使用JSR-303样式注释时自定义消息。由于您未在此处使用 - 而是使用自定义验证程序方法并直接调用errors.rejectValue
,因此您应将邮件放在标准messages.properties
文件中。在webflow中,此文件是特定于流的,并且与流定义XML文件位于同一文件夹中。
答案 1 :(得分:0)
问题解决了 - 我错过了一步。要使用属性包,您需要使用MessageResolver并像这样调用它:
MessageResolver messageResolver = new MessageBuilder().error().source(source).code("validation.message.property.here").defaultText(errorMessage).build();
messageResolver.resolveMessage(messageSource, Locale.ENGLISH);
return messageResolver;
您的messageSource是您的Spring bean,其中包含您的应用程序上下文中定义的消息属性包:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
<value>ValidationMessages</value>
</list>
</property>
</bean>
MessageResolver上的文档是here。