引起:org.springframework.context.NoSuchMessageException:代码下没有找到任何消息

Nim*_*sky 7 spring internationalization

试图让Spring国际化运作起来.我使用了classpath:messages basename,为语言创建了.properties文件.它们被核心地复制到web-inf文件夹,代码存在于属性文件中......

这是显示一切的ide,请帮助我.我已经从我已经完成的另一个项目中复制了该设置.我已经尝试创建一堆不同的消息文件,但它没有提取任何东西...图片显示了web.xml,spring-servlet.xml和目录结构.

这显示了一切,我看不出我错过了什么

编辑 如果我将bean定义添加到applicationContext而不是spring-servlet它可以工作..?

Oli*_*and 12

我会去尝试:

如果文件位于WEB-INF/classes目录下,请尝试:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="WEB-INF/classes/messages" />
</bean>
Run Code Online (Sandbox Code Playgroud)

并且文件的名称应该是:

  • messages.properties
  • messages_en.properties
  • messages_en_GB.properties

编辑 - 最后一次尝试!

这种编写配置的方式怎么样,在你上次评论后我闻到了这一点:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
</bean>

<mvc:interceptors>
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>
</mvc:interceptors>
Run Code Online (Sandbox Code Playgroud)