9

JSP ページで訪問者のロケールを取得して、言語のリストを含むドロップダウン メニューを適切に表示し、現在のロケールに従って言語を選択できるようにする必要があります。通常、私は次のようなことをするかもしれません${pageContext.request.locale}

問題は、ユーザーの要求ヘッダー (ブラウザーが送信するもの) に従ってのみロケールを提供することだと思います。ただし、ユーザーが言語/ロケールを変更した可能性があるため、セッションも確認する Spring のメカニズムを使用する必要があります。

RequestContextUtils.getLocale(request).toString();

しかし、JSP ページでそれにアクセスし、JSP コードで動作させるのはそれほど簡単ではありません。

または、言語のドロップダウン メニューをユーザーに表示するための別の簡単なメカニズムはありますか? Spring は現在のロケールを JSP から簡単にアクセスできるオブジェクトに保存しますか?

4

3 に答える 3

27

私たちのために

${pageContext.response.locale}

トリックをしました。このプロパティは、Spring のロケール リゾルバによって設定されたものに従います。

于 2014-05-22T13:25:21.137 に答える
2

SessionLocaleResolver を使用すると、現在のロケールは、SessionLocaleResolver クラスで指定された属性名を使用してセッションに保存されます。SessionLocaleResolver への参照は、別の属性名 (org.springframework.web.servlet.DispatcherServlet#LOCALE_RESOLVER_BEAN_NAME) を使用してリクエストに格納されます。

Java コードを使用せずに jsp ページ内でロケールを直接取得する簡単な方法がわかりません。

現在のロケールを取得し、コントローラーで選択可能な言語のリストを作成して、これをモデルに追加します。

これにより、コードがテスト可能になり、java コードが jsp からコントローラーに移動します。

于 2011-09-20T16:33:23.717 に答える
1

1行のソリューション..

RequestContextUtils.getLocale(request)
于 2012-12-13T06:21:05.730 に答える