1

データベースからユーザーのロケールを取得しています。ユーザーがログインするたびに、ページはその特定の言語で表示される必要があります。このために、JSFで以下のコードを使用しています

    <f:metadata>
       <f:event type="preRenderView" listener="#{language.preferredLocale}"/>
    </f:metadata>
    <ui:define name="content_pane">
    <f:view locale="#{language.localeCode}"/>
    </ui:define>

    //language bean code is
    public void preferredLocale(ComponentSystemEvent e){
        // code to retrieve locale for particular user              
    }

しかし、上記のコードは、ページのオンロードでロケールを設定するために機能していません。ページの読み込み時にロケールを設定する方法はありますか?

4

2 に答える 2

1

これは確かに正しい方法ではありません。それでは手遅れです。<f:view locale>すでに正しく設定されていることを確認する必要があります。

現在のアプリケーション設計に応じて、とにかくこれを実現する方法がいくつかあります。最も単純なものは、おそらく次のようになります。

@ManagedBean
@RequestScoped
public void LoginBean {

    @ManagedProperty("#{localeBean}")
    private LocaleBean localeBean;

    public void submit() {
        User user = userService.find(username, password);

        if (user != null) {
            localeBean.setLanguage(user.getPreferences().getLanguage());
            // ...
        }

        // ...
    }

    // ...
}
于 2013-07-27T15:01:16.193 に答える