3

spring-MVC を使用して記述された Web アプリケーションで、ユーザーが言語の名前であるリンクをクリックして現在の言語を変更できるようにしたいと考えています。

私はすでに messageSource を設定しており、すべての JSP ページがこの messageSource を使用してメッセージを検索できるようにしています。現在、言語はユーザー ブラウザのロケールに応じて変化しています。

だから、私が今やりたいことは、ロケールを手動で変更できるようにすることです。

クラス SessionLocaleResolver が役立つことがわかりましたが、アプリケーション コンテキスト ファイル (名前は myAppName-servlet.xml) で設定する方法がわかりません。

私はビーンを定義しました:

<bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
</bean>

しかし、これをどの Bean にプラグインする必要がありますか? さらに、ロケールに関連する Cookie をユーザー セッションに設定するにはどうすればよいですか?

4

1 に答える 1

6

必要なすべての情報は、目の前の次のドキュメントにありました。

http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-localeresolver

簡単に言うと、次の xml を myAppName-servlet.xml に適合させました。

<bean id="localeChangeInterceptor"
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="siteLanguage"/>
</bean>

<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

<bean id="urlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="localeChangeInterceptor"/>
        </list>
    </property>
    <property name="mappings">
        <value>/**/*.view=someController</value>
    </property>
</bean>

そして今、パラメーターを使用して任意のページにアクセスするだけで十分です:

siteLanguage=locale

サイト全体のロケールを変更します。

例: http://localhost:8080/SBrowser/deliveries.html?siteLanguage=frenter code here

于 2009-04-07T16:05:19.490 に答える