Как локализовать составные компоненты JSF 2 - PullRequest
0 голосов
/ 19 октября 2011

У меня есть некоторые сомнения относительно того, как локализация работает с составными компонентами в 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)

...

Мои вопросы:

-Мне нужно как-то вручную загрузить этот пакет сообщений, или это должно произойти автоматически?

-Можно ли мешать другим пакетам сообщений в моем приложении вне папки, в которой находится составной компонент? *

-Как я могу это исправить?

1 Ответ

2 голосов
/ 19 октября 2011

Имя файла пакета ресурсов должно быть точно , совпадающее с именем файла компонента.

Итак, если у вас есть файл demoCustomComponent.xhtml, представляющий составной компонент, то вам следуетиметь файл demoCustomComponent.properties, содержащий локализованные сообщения (по умолчанию).Вы можете интернационализировать его, например, demoCustomComponent_es.properties, но у вас всегда должен быть путь по умолчанию.

...