如何从 Spring MVC 获取当前使用的区域设置?

发布于 2024-10-24 23:24:25 字数 544 浏览 0 评论 0原文

我有以下表格。

<form id="langForm" action="" method="get">
    <select name="lang" id="lang" class="styled" onchange="this.form.submit();">
        <option value="pl" ${param.lang == 'pl' ? 'selected' : ''} >PL</option>
        <option value="en" ${param.lang == 'en' ? 'selected' : ''} >EN</option>
    </select>
</form>

Spring MVC 设置语言参数并关心 i18n/l10n。我想更改 ${param.lang} 以让它通过 Spring MVC 从会话中获取当前用户语言,因为 lang 参数不一定存在于每个要求。我怎样才能实现这个目标?

I have the following form.

<form id="langForm" action="" method="get">
    <select name="lang" id="lang" class="styled" onchange="this.form.submit();">
        <option value="pl" ${param.lang == 'pl' ? 'selected' : ''} >PL</option>
        <option value="en" ${param.lang == 'en' ? 'selected' : ''} >EN</option>
    </select>
</form>

Spring MVC sets the language parameter and takes care about i18n/l10n. I would like to change the ${param.lang} to let it obtain the current user language from session by Spring MVC, because the lang parameter is not necessarily present in every request. How can I achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遥远的她 2024-10-31 23:24:25

在您的 xml 配置中添加以下内容:

...

<mvc:interceptors>
        <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" />
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
            p:paramName="lang" />
    </mvc:interceptors>

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

将您的代码替换为:

<form id="langForm" action="" method="get">
    <select name="lang" id="lang" class="styled" onchange="this.form.submit();">
        <option value="pl">PL</option>
        <option value="en">EN</option>
    </select>
</form>

使用此配置,所选的区域设置将保存在 cookie 浏览器中。

不要忘记标签中文件开头的命名空间:
xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc -3.0.xsd

教程这里

Add the fallowing in your xml configuration:

...

<mvc:interceptors>
        <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" />
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
            p:paramName="lang" />
    </mvc:interceptors>

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

Replace you code by:

<form id="langForm" action="" method="get">
    <select name="lang" id="lang" class="styled" onchange="this.form.submit();">
        <option value="pl">PL</option>
        <option value="en">EN</option>
    </select>
</form>

With this configuration the locale selected wil be save in cookies browser.

don't forget namespaces at the begin of file in tag :
xmlns:mvc="http://www.springframework.org/schema/mvc"
and

xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

tutorial here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文