У меня есть некоторые сомнения относительно того, как локализация работает с составными компонентами в 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)
...
Мои вопросы:
-Мне нужно как-то вручную загрузить этот пакет сообщений, или это должно произойти автоматически?
-Можно ли мешать другим пакетам сообщений в моем приложении вне папки, в которой находится составной компонент? *
-Как я могу это исправить?