Spring MVC自定义错误和国际化


问题内容

在我的Web应用程序中,我使用批注处理错误。一切正常,我可以通过“ message”参数使用自定义消息。

@Digits(fraction = 0, integer = 3, message="my custom error message...")
private String price;

现在,我正在尝试使用.properties文件来对此消息进行国际化,但是我确实错过了一些东西,因此无法正常工作。

我的spring配置:

<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <beans:property name="basenames" value="classpath:i18n/messages, classpath:i18n/errors" />
    <beans:property name="defaultEncoding" value="UTF-8" />
</beans:bean>

<beans:bean name="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <beans:property name="validationMessageSource">
        <beans:ref bean="messageSource" />
    </beans:property>
</beans:bean>

<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.FixedLocaleResolver">
    <beans:property name="defaultLocale" value="fr" />
</beans:bean>

我的新豆:

@Digits(fraction = 0, integer = 3)
private String price;

我的“ errors_fr.properties”文件。我已经尝试了一切:

Digits.myBean.myNestedBean.price = my custom error message...
Digits.myNestedBean.price = my custom error message...
javax.validation.constraints.Digits.myNestedBean.price = my custom error message...

我总是从spring获得相同的通用消息,就像spring无法检测到我的.properties文件一样。顺便说一下,调试时可以在BindingResult对象中找到上面的消息键。

我在这里想念什么?

请注意,我已经在我的jsp的文件中(在“ messages_fr.properties”文件中)对消息进行了国际化,并且它们可以正常工作。


问题答案:

我的应用程序中有一个类似的问题,希望对您有所帮助。

如该线程中所述,http :
//forum.springsource.org/showthread.php?73240-Roo-JSR-303-Validations-and-
Localization
,您需要:

  1. 在文件ValidationMessages.properties中定义注释所引用的错误消息
  2. 在注释中,请参考大括号中包含的错误消息键:

@Digits(fraction = 0, integer = 3, message="{message.key}")

希望这可以帮助。