【发布时间】:2011-12-10 16:47:17
【问题描述】:
我对本地化如何与 JSF 中的复合组件一起工作有一些疑问,我想了解它是如何工作的。
所以我决定用一个小例子来练习复合组件的本地化。
根据建议,我在复合组件所在的完全相同的文件夹中创建了一个 .properties 文件(WebContent/resources 的子文件夹)
labelField1 = FIELD 1
labelField2 = FIELD 2
然后我使用了#{cc.resourceBundleMap.将本地化文本添加到组件实现中:
<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 的其他部分)
-我该如何解决?
【问题讨论】:
标签: java jsf jakarta-ee jsf-2 java-ee-6