我是春天的新人,我仍然不了解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>
答案 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属性。