2011-05-27 15 views
1

在UI上有退出非平凡菜單。 其項目在環這樣命名:JSF:將實際語言環境參數傳遞給resourceBundle調用,而不是默認值null

循環開始

<li> 
<h:commandLink action="#{menuItem.getGlobalTransitionName()}">#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)} 
</h:commandLink> 
</li> 

上面進行循環結束

調用資源包,其中默認的區域設置 - 它是硬編碼到null價值,所以決心En總是:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)} 

我試過的東西:

這個調用解析錯誤:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,${externalContext.locale})} 

2.這個調用錯誤,以及:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,#{resourceBundle.locale})} 

我怎麼能通真正使用的語言環境呢?

回答

1

嵌套EL表達式確實無效。不要這樣做。另外,ExternalContext沒有getLocale()方法。您想用#{facesContext.viewRoot.locale}代替。

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,facesContext.viewRoot.locale)} 
+0

我用$ {} externalContext.locale在我們的應用程序,它工作正常 – sergionni 2011-05-27 11:32:15

+0

哦,它的工作原理,只是externalContext.locale,謝謝大家幫忙 – sergionni 2011-05-27 11:34:03

+0

好了,那麼它的具體實現。標準的API至少絕對沒有。只有一個'getRequestLocale()'方法。另請參閱http://download.oracle.com/javaee/6/api/javax/faces/context/ExternalContext.html – BalusC 2011-05-27 11:34:28

相關問題