我對JSF中複合組件的本地化如何工作有些疑惑,我想了解它是如何工作的。如何本地化JSF 2複合組件
所以我決定用一個小例子來練習複合組件的本地化。
繼建議I在所述複合部件是
labelField1 = FIELD 1
labelField2 = FIELD 2
然後我用#{cc.resourceBundleMap完全相同的文件夾(的WebContent /資源的一個子文件夾)創建的屬性文件。本地化的文本添加到組件implmentation:當我運行應用程序
<html>
<composite:interface>
...
</composite:interface>
<composite:implementation>
<h:form>
<h:outputText value="#{cc.resourceBundleMap.labelField1}"/>
...
<h:outputText value="#{cc.resourceBundleMap.labelField2}"/>
...
</h:form>
</composite:implementation>
</html>
問題是這樣的:
SEVERE: Error Rendering View[/index.xhtml]
javax.el.ELException: /resources/custom/demoCustomComponent.xhtml @14,63 value="#{cc.resourceBundleMap.labelField1}": java.lang.NullPointerException
....
Caused by: java.lang.NullPointerException
at javax.faces.component.UIComponent.findComponentResourceBundleLocaleMatch(UIComponent.java:1000)
...
我的問題是:
- 我是否需要手動加載該消息捆綁或這應該自動發生?
- 在我的應用程序中,複合組件所在的文件夾之外的其他消息包打擾了這個嗎?(我還有一個message_en.properties在應用程序的其他位置,用於UI的模板和其他部分)
- 我該如何解決它?
好吧,我明白了。在我的應用程序UI中的其他本地化,可以更改其文件名稱,只需要在faces-config.xml中添加該包。但對於不同的複合組件。 現在我修好了。謝謝! – sfrj
它不適合我。我有三個用於不同語言的.properties文件(以及一個沒有_xx後綴的默認文件),並且該消息始終由此默認屬性文件填充。我嘗試使用FacesContext.getCurrentInstance()。getViewRoot()。setLocale(locale)更改語言並更改我的Internet瀏覽器的lang設置。 Standart(不是複合組件)改變L10n的作品。任何想法? – Ziletka