faces-config.xml
:
<アプリケーション> <ロケール設定>ru ua アプリケーション>
Bean アクション メソッドで、現在のビューのロケールを次のように変更します。
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));
問題は、ua
ロケールがセッションではなくリクエスト/ビューにのみ適用されることです。同じセッション内の別のリクエスト/ビューは、ロケールをデフォルトの ru
値にリセットします。
ロケールをセッションに適用するにはどうすればよいですか?
この問題は .properties ファイル名にも関連しているようです。 Java のロケール コード (小文字)、例: en_gb ただし、Netbeans によって自動的に生成されるロケールは小文字と大文字です (例:messages_en_GB.properties)。 これをmessages_en_gb.propertiesに変更します。 すべてを試してみれば、問題なく動作するはずです。
選択したロケールをセッション スコープに保存し、2 か所で設定する必要があります。 1 回目は
リーリーUIViewRoot#setLocale() 経由です。
ロケールを変更した直後 (これによりロケールが変更されます)現在のビューのルートを変更して、後続のリクエストに反映されるようにします。後でリダイレクトを実行する場合、この部分は不要です)。locale属性 (これにより、後続のリクエスト/ビューでロケールが設定/保持されます)。
これは、LocaleBean
がどのように見えるかの例です:これはビューがどのように見えるかの例です:
#{text}リーリー
これは、が
faces-config.xmlで次のように構成されていることを前提としています。 リーリー
こちらも参照:は、JSF 機能には必須ではありませんが、検索エンジンの説明ページには必須であることに注意してください。そうしないと、重複コンテンツとしてマークされる可能性があり、SEO に悪影響を及ぼします。
Maven と JSF Web アプリケーションの構造、JSF リソースはどこに配置されますか?