2011-07-12 21 views

回答

4

p:toolTip組件的value屬性必須是EL表達式或文字文本。通常,人們會在工具提示的EL表達式中引用使用f:loadBundle標記的var屬性聲明的資源包。

使用basename屬性聲明的底層資源包可以由屬性文件本身提供支持(在這種情況下,您需要將屬性文件放在類路徑的相應目錄中),或者可以將它定製爲自定義可以從屬性文件(位於容器外部)讀取的ResourceBundle實現,或者針對該問題的數據庫或任何存儲。

你可以因此從定義爲現有的一個改變現有的EL表達式:

<f:loadBundle var="msg" basename="propfile_location" /> 

<f:loadBundle var="msg" basename="fully qualified class name of the ResourceBundle class" /> 

在簡單的話,您將需要推出自己的ResourceBundle類(ES)以支持各種語言環境。不用說,但是您將需要覆蓋ResourceBundle.getObject(java.lang.String)方法,因爲在評估引用ResourceBundles的EL表達式時,它將由ResourceBundleELResolver實現調用。

此外,您需要確保ResourceBundle的ResourceBundle.getObject(java.lang.String)實現將始終重新獲取並返回與提供的密鑰對應的值。如果未能確保這將意味着資源包獲取的初始值可能會在後續調用中返回,特別是在緩存初始值時。即使部署了分解的WAR文件,您可以在不重新部署應用程序的情況下修改屬性文件內容,也可能會遇到此行爲,這就是爲什麼使用不緩存值的自定義ResourceBundle實現很重要的原因。

+0

謝謝你的幫助 – Shahzeb

相關問題