Spring mvc 在Spring中,单击本地更改链接时,MVC 3本地未更改
我已经为我的Spring MVC项目设置了i18n。单击链接时,语言没有改变:Spring mvc 在Spring中,单击本地更改链接时,MVC 3本地未更改,spring-mvc,internationalization,Spring Mvc,Internationalization,我已经为我的Spring MVC项目设置了i18n。单击链接时,语言没有改变: <a href="?lang=hi">Hindi</a> <a href="?lang=en">English</a> controller-servlet.xml <mvc:annotation-driven/> <context:component-scan base-package="com.avvas.search.co
<a href="?lang=hi">Hindi</a>
<a href="?lang=en">English</a>
controller-servlet.xml
<mvc:annotation-driven/>
<context:component-scan base-package="com.avvas.search.controller" />
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:resources/messages" />
<property name="defaultEncoding" value="UTF-8"/>
<property name="cacheSeconds" value="0" />
</bean>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<ref bean="localeChangeInterceptor" />
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/javascript/**" location="/javascript/" />
本地更改链接:
<a href="?lang=hi">Hindi</a>
<a href="?lang=en">English</a>
问题是,当我点击印地语时,页面应该以印地语显示,语言没有改变。但是,我将默认语言更改为印地语,然后将本地语言改为印地语,但当我单击英语本地更改链接时,本地语言没有更改。正在注册自己的处理程序映射(RequestMappingHandlerMapping
),您的侦听器配置不适用于此
如下定义您的拦截器:
<mvc:interceptors>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptors>
以下是完整的代码。基本上,我们需要明确注册拦截器
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
在上面给定的xml中,您已经给出了“localeChangeInterceptor”,但您没有提到它应该在默认情况下拦截所有请求
因此Spring将加载所有bean,但它不会将其注册为拦截器,除非您定义它应该拦截的请求
在下面的示例中,我在mvc拦截器中定义它,并告诉框架在处理任何请求之前应该咨询该拦截器
<mvc:interceptor>
<mvc:mapping path="/**/**/" />
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale" />
</bean>
</mvc:interceptor>
</mvc:interceptors>