【问题标题】:spring:message (I18n) giving error : No message found under code 'property.name' for locale 'en'spring:message (I18n) 给出错误:在语言环境“en”的代码“property.name”下找不到消息
【发布时间】:2015-11-13 06:45:42
【问题描述】:

我正在实施春季国际化(i18n)。 它在我的本地环境中运行良好。但是当我将它部署在开发服务器上时,它会出现此错误。

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'property.name' for locale 'en'.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:916)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:845)
org.apache.jsp.WEB_002dINF.pages.PayLinkForm_002dMercadoPago_jsp._jspService(PayLinkForm_002dMercadoPago_jsp.java:618)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

我的 spring-mvc-config.xml 有这些设置:

<!-- For setting internationalization -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
    <property name="defaultLocale" value="en"/>
</bean>

<!-- call this interceptor before any controller call and change the default language, if language parameter is there in the URL -->
<mvc:interceptors> 
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
        <property name="paramName" value="language" /> 
    </bean> 
</mvc:interceptors>

<!-- Register the language.properties -->
<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename">
        <value>config/language</value> 
    </property>
</bean>

我认为由于某种路径问题,它无法检测到开发服务器上的属性文件。尽管此处定义的路径“配置/语言”在我的本地运行良好。

【问题讨论】:

  • 您能否检查一下 .war 文件和部署目录中的文件是否可用?是否所有消息都发生错误,或者仅针对一条消息?
  • 我查看了 .war 文件,但属性文件不存在。我尝试再次进行 Maven 构建,但它们仍然不存在。有什么建议我怎样才能让他们在那里?是的,所有属性都存在这个问题,只是我在其他任何地方都使用默认文本,以防找不到文本,所以其他属性不会引发错误,而是显示默认文本。

标签: eclipse spring spring-mvc internationalization spring-messaging


【解决方案1】:

我通过以下步骤解决了这个问题:

1) 用这个标签替换语言注册(使用 org.springframework.context.support.ReloadableResourceBundleMessageSource 代替 org.springframework.context.support.ResourceBundleMessageSource ):

<!-- Register the language.properties -->
<bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/i18n/language" />
</bean>

2) 将 language.properties 放在 WEB-INF 中的任何位置(这非常重要):

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多