2013-07-27 49 views
1

我正在從數據庫中檢索用戶的區域設置。每當用戶登錄時,頁面應該以該特定語言顯示。所以對於這個我在JSF中使用下面的代碼在加載前執行該方法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    
    } 

但上述代碼不工作來設置頁面onload上的區域設置。有沒有其他辦法可以設置頁面加載的區域設置?

回答

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()); 
      // ... 
     } 

     // ... 
    } 

    // ... 
} 
+0

能否請你解釋如何在JSF頁面上添加語言? – user2625662

+0

將其設置爲''。另見另一個例子http://stackoverflow.com/questions/4830588/jsf-locale-is-set-per-request-not-for-session/4830669#4830669 – BalusC

0

使用本

<f:view beforePhase=#{bean.viewBeforePhase} >