Spring3のSessionLocaleResolverを使用してJSPで訪問者のロケールを取得する方法
-
28-10-2019 - |
質問
JSPページで訪問者のロケールを取得して、言語のリストを含むドロップダウンメニューを適切に表示し、現在のロケールに従って選択した言語を使用できるようにする必要があります。通常、私は${pageContext.request.locale}
のようなことをするかもしれません。
問題は、私が思うに、ユーザーのリクエストヘッダー(ブラウザが送信するもの)に応じたロケールしか提供されないことです。ただし、ユーザーが言語/ロケールを変更した可能性があるため、セッションも確認するSpringのメカニズムを使用する必要があります。 ジェネラコディセタグプレ
しかし、JSPページでそれにアクセスし、JSPコードを使用させるのはそれほど簡単ではありません。
または、言語のドロップダウンメニューをユーザーに表示するための別の簡単なメカニズムはありますか?Springは現在のロケールをJSPから簡単にアクセスできるオブジェクトに保存しますか?
解決
SessionLocaleResolverを使用すると、SessionLocaleResolverクラスで指定された属性名を使用して、現在のロケールがセッションに保存されます。SessionLocaleResolverへの参照は、別の属性名(org.springframework.web.servlet.DispatcherServlet#LOCALE_RESOLVER_BEAN_NAME)を使用してリクエストに格納されます。
Javaコードを使用せずにjspページ内で直接ロケールを取得する簡単な方法がわかりません。
現在のロケールを取得し、コントローラーで選択可能な言語のリストを作成して、これをモデルに追加します。
これにより、コードがテスト可能になり、Javaコードがjspからコントローラーに移動します。
他のヒント
私たちのために ジェネラコディセタグプレ
トリックをしました。このプロパティは、Springのロケールリゾルバによって設定されたものに従います。
ワンラインソリューション.. ジェネラコディセタグプレ