1

我正在使用 Spring ResourceBundleMessageSource 进行国际化。在我fmt:message用于表单字段标签的视图表单中。在验证器中,当字段值不正确时,我必须拒绝带有相应表单字段标签和错误消息的字段。例如<fmt:message key"abc" /> <form:input name="xyz">

错误消息将是:“abc 的值不正确”。

在验证器中,我不得不说 -

`errors.rejectValue("xyz", "error.message", new Object[] {getMessage("message.abc")})`

弹簧配置:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
 <property name="basename" value="MySource" /> 
</bean>

getMessageMessageSourceAccesor用来从资源文件中读取消息。

我的资源文件名是MySource.properties,我的资源文件夹中没有其他特定于语言的文件,我也可以在 jsp 视图中从此文件中读取标签,但是NoSuchMessage当我尝试访问时出现异常(对于语言环境中的 abc)它来自验证器。

简短的问题是如何指示 spring 资源在未提供语言资源文件时使用默认属性文件(不带后缀的文件名)来搜索消息?

任何指针都将有助于继续前进。

4

2 回答 2

1

我遇到了同样的问题。在检查 spring mvc 的文档后,我的版本是 4.1.1,ResourceBundleMessageSource将“ basenames ”作为属性而不是“ basename

private String[] basenames = new String[0];

更新 Spring Web 应用程序上下文中配置的 ResourceBundleMessageSource bean 的属性名称,使其工作:D

<property name="basenames" value="messages"></property>

我还不能发布我的截图,因为我需要 10 分,而且我是这里的新手 :D

于 2014-11-03T14:43:50.013 回答
0

我假设您正在使用 Spring MVC ,

您是否在应用程序上下文文件中配置了 Spring 资源包

例子

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

此链接使用带有 ResourceBundleMessageSource 示例的演示 Spring 资源包详细解释它

如果有帮助,请给帖子评分。

于 2013-02-06T10:40:42.337 回答