如何国际化REST Spring-MVC应用程序?

时间:2014-03-08 08:44:17

标签: spring spring-mvc internationalization

我是春天的新人,我仍然不了解spring的等级和术语。我正在用spring实现一个 RESTful 应用程序。在搜索和阅读如何国际化春天后,我尝试在我的应用程序中做到这一点。但在我看来它没有正确配置。因为我得到例外。我想向您展示我的项目结构的屏幕截图。我想问你为什么applicationContext.xml显示存在问题。

弹簧servlet.xml中

<!-- SPRING INTERNALIZATION CONFIGURATION -->
    <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>
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>
    <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <ref bean="localeChangeInterceptor" />
        </property>
    </bean>

1 个答案:

答案 0 :(得分:0)

ReloadableResourceBundleMessageSource.setBaseNames()的javadoc说:

  

设置一个基本名称数组,每个基本名称遵循不指定文件扩展名或语言代码的基本ResourceBundle约定,但与引用Spring资源位置的ResourceBundleMessageSource相反: “WEB-INF / messages.properties”,“WEB-INF / messages_en.properties”等的“WEB-INF / messages”。

但是你已经将你的消息属性文件放在Maven项目结构中的src / main / resources下了,所以它们最终会在类路径的根目录中出现(这意味着即使Spring在类路径中查找它们,你在配置中使用的/ resources前缀会阻止Spring找到它们。

所以将属性文件放在WEB-INF下,并使用WEB-INF/messages作为basenames属性。