2014-01-07 36 views
1

如何连接自定义Webflow Validator类中的Spring ValidationMessages包?我有一个验证器实现,并且工作:在Spring Webflow验证中使用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

问题解决了 - 我错过了一个步骤。为了使用一个属性包,你需要使用一个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

0

我的理解是,ValidationMessages.properties用于在使用JSR-303样式注释时自定义消息。由于您没有在这里使用这些信息,而是使用自定义的验证方法并直接调用errors.rejectValue,所以您应该将消息放入标准的messages.properties文件中。在webflow中,此文件是特定于流的,并与同一文件夹中的流程定义XML文件一起存在。

+0

是的,我尝试了几种不同的方式来做到这一点。我最终使用MessageResolver将它理顺了。关于哪些消息文件对于这些消息是“适当的”,Spring文档并不是很清楚,他们可能也会参与其中。我最终将它们都放在了我的消息源bean中,并且还添加了实际调用resolveMessage()的重要步骤,该解决方法可以根据消息源解析消息。我之前没有这样做过。 (哎呀。) – user3120173