2011-04-05 8 views
0

私はJSFで国際化を実装したいと思っています。ネット上で提供されるテクニックのほとんどは、ユーザに自分のロケールを尋ね、セッションBeanに値を設定することを含みます。しかし、私はロケールを要求の受け入れ言語ヘッダーに基づいて設定したいと思います。JSFは最初のページを読み込む前にロケールを設定して、それを言語セッションBeanに設定して再利用できます。ページがロードされた瞬間からのJSF国際化。

したがって、ロケールを設定するために使用できるjsfで実装された機能のようなロケールフィルタがありますか?

ありがとうございます!

+0

関連:http://stackoverflow.com/questions/5388426/jsf-2-0-set-locale-throughout-session-from-browser-and-programmatically/5391493#5391493 – BalusC

答えて

1

ロケールは、faces-config.xmlで正しく設定し、正しいリソースバンドルファイルを持っている場合、Java EEアプリケーションによって自動的に検出されます。このtutorial from Netbeansは良い紹介です。

また、WebアプリケーションがJava EE tutorialからこの引用によるなどの要求に基づいて、クライアントのロケールを検出することができます。

が与えられた ユーザーの正しい文字列を取得するには、Webアプリケーションのいずれか を取得getLocaleメソッドを使用して リクエストのロケール(ブラウザで 言語設定)を設定するか、 ユーザーに ロケールを明示的に選択させることができます。

のgetLocaleメソッドを使用する方法の例もあります:

FacesContext ctx = FacesContext.getCurrentInstance(); 
Locale locale = ctx.getViewRoot().getLocale(); 

あなたは簡単にアクセスすることがセッション状態にそれを置くことができます。

+0

ありがとうございました。 faces-config xmlのサポートされているロケールは、accept-languageヘッダーのユーザーブラウザからのloacaleと一致します。 –

+0

デフォルトでは、UIViewRoot#getLocale()にはすでにユーザ定義のロケールが含まれています。 – BalusC

関連する問題