如何本地化JSF 2复合组件
我对JSF中复合组件的本地化如何工作有一些疑问,我想了解它是如何工作的。
所以我决定用一个小例子练习复合组件的本地化。
根据建议,我在复合组件所在的完全相同的文件夹中创建了一个.properties文件(WebContent / resources的子文件夹)
labelField1 = FIELD 1 labelField2 = FIELD 2
然后我用#{cc.resourceBundleMap。 将本地化文本添加到组件implmentation:
... ... ...
我运行应用程序时的问题是:
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的其他部分)
– 我怎么修理它?
资源包的文件名必须与组件的文件名完全相同 。
因此,如果您有一个表示复合组件的demoCustomComponent.xhtml
文件,那么您应该有一个demoCustomComponent.properties
(默认)本地化消息的demoCustomComponent.properties
文件。 您可以使用例如demoCustomComponent_es.properties
对其进行国际化,但您应该始终在路径中使用默认值。