Jsf 1.2 Application.getMessageBundle () Возвращает NULL
-
30-09-2019 - |
Вопрос
я использую Весна 2.5 с JSF 1.2., на Tomcat 6.0.13..
В одной части кода я пытаюсь загрузить ResourceBundle. Используя следующий подход:
ResourceBundle.getBundle(context.getApplication().getMessageBundle(), Locale.EN);
Проблема в том, что getmessagebundle () Метод возвращает нулевой. Отказ Это используется для работы с JSF 1.1.. Отказ У кого-нибудь есть идея, что может быть проблемой?
На данный момент я собираюсь на имя пучка Hardcode, но я бы предпочел, если все мои данные конфигурации будут размещены внутри Лицо-конфиг.
Bundle Resource устанавливается следующим образом:
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<resource-bundle>
<base-name>org.mysite.MessageBundle</base-name>
<var>msgs</var>
</resource-bundle>
</application>
Решение
То getMessageBundle()
возвращает значение <message-bundle>
въезд внутрь faces-config.xml
, не <resource-bundle>
вход.
Его значение на самом деле не доступна API JSF 1.2. Вы должны указать это самостоятельно.
ResourceBundle bundle = context.getApplication().getResourceBundle(context, "org.mysite.MessageBundle");
То <message-bundle>
предназначен для проверки / преобразования сообщений. Вероятно, у тебя есть на самом деле использовал это в JSF 1.1.
Другие советы
Игорб,
Вы можете использовать инъекцию ресурсов, чтобы JSF предоставить вашему управляемому бону с помощью правильного ResourceBundle. Это удалит потребность в жестком коде в вашем источнике Java и сохранить ассоциацию красиво централизованной.
Начните с определения управляемого свойства на вашем бобовом бону. В конфигурации JSF установите значение управляемого свойства в экспрессию EL, которое ссылается на ваш пакет ресурсов.
Я сделал что-то вроде следующего, используя Tomcat 6. Единственное предостережение состоит в том, что вы не можете получить доступ к этому значению с конструктора вашего Backing Bean, поскольку JSF еще не будет инициализирован. Использовать @PostConstruct
По методу инициализации, если значение необходимо в начале жизненного цикла бобов.
<managed-bean>
...
<managed-property>
<property-name>messages</property-name>
<property-class>java.util.ResourceBundle</property-class>
<value>#{msg}</value>
</managed-property>
...
</managed-bean>
<application>
...
<resource-bundle>
<base-name>application_messages</base-name>
<var>msg</var>
</resource-bundle>
...
</application>