リクエスト/ビューレベルごとに選択されたロケールを記憶するのではなく、JSFでセッションレベルのローカリゼーションを実装する方法
P粉360266095
P粉360266095 2023-08-22 21:30:42
0
2
431

faces-config.xml:

<アプリケーション> <ロケール設定> ru ua  

Bean アクション メソッドで、現在のビューのロケールを次のように変更します。

FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));

問題は、ua ロケールがセッションではなくリクエスト/ビューにのみ適用されることです。同じセッション内の別のリクエスト/ビューは、ロケールをデフォルトの ru 値にリセットします。

ロケールをセッションに適用するにはどうすればよいですか?

P粉360266095
P粉360266095

全員に返信 (2)
P粉662802882

この問題は .properties ファイル名にも関連しているようです。 Java のロケール コード (小文字)、例: en_gb ただし、Netbeans によって自動的に生成されるロケールは小文字と大文字です (例:messages_en_GB.properties)。 これをmessages_en_gb.propertiesに変更します。 すべてを試してみれば、問題なく動作するはずです。

いいねを押す+0
    P粉426906369

    選択したロケールをセッション スコープに保存し、2 か所で設定する必要があります。 1 回目はUIViewRoot#setLocale() 経由です。ロケールを変更した直後 (これによりロケールが変更されます)現在のビューのルートを変更して、後続のリクエストに反映されるようにします。後でリダイレクトを実行する場合、この部分は不要です)。locale属性 (これにより、後続のリクエスト/ビューでロケールが設定/保持されます)。これは、LocaleBeanがどのように見えるかの例です:

    リーリー

    これはビューがどのように見えるかの例です:リーリーこれは、

    #{text}

    faces-config.xml

    で次のように構成されていることを前提としています。 リーリーは、JSF 機能には必須ではありませんが、検索エンジンの説明ページには必須であることに注意してください。そうしないと、重複コンテンツとしてマークされる可能性があり、SEO に悪影響を及ぼします。

    こちらも参照:

    Maven と JSF Web アプリケーションの構造、JSF リソースはどこに配置されますか?

    • JSF における国際化、メッセージバンドルとリソースバンドルをいつ使用するか?
    • JSF 2.0 アプリケーションでの UTF-8 エンコーディングを使用したプロパティ ファイルの国際化
    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!