Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 在Spring中,单击本地更改链接时,MVC 3本地未更改_Spring Mvc_Internationalization - Fatal编程技术网

Spring mvc 在Spring中,单击本地更改链接时,MVC 3本地未更改

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

我已经为我的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.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>