Атрибут value
компонента p:toolTip
должен быть выражением EL или литеральным текстом.Обычно можно ссылаться на пакет ресурсов, объявленный с использованием атрибута var
тега f:loadBundle
, в выражении EL для всплывающей подсказки.
Базовый пакет ресурсов, объявленный с использованием атрибута basename
, может быть поддержансамим файлом свойств (в этом случае вам нужно поместить файл свойств в соответствующий каталог на пути к классам), или в этом отношении это может быть пользовательская реализация ResourceBundle, которая может считывать данные из файла свойств (расположенного вне контейнера),или база данных или любое хранилище по этому вопросу.
Таким образом, вы можете изменить существующее выражение EL с существующего, определенного как:
<f:loadBundle var="msg" basename="propfile_location" />
на
<f:loadBundle var="msg" basename="fully qualified class name of the ResourceBundle class" />
Проще говоря, вам нужно будет свернуть свой собственный класс (ы) ResourceBundle для поддержки различных локалей.Нет необходимости указывать, но вам нужно переопределить метод ResourceBundle.getObject(java.lang.String)
, так как он вызывается реализацией ResourceBundleELResolver
при оценке выражений EL, ссылающихся на ResourceBundles.
Кроме того, вам необходимо убедиться, что реализация ResourceBundle.getObject(java.lang.String)
вашего ResourceBundle всегда будет повторно извлекать и возвращать значение, соответствующее предоставленному ключу.Если это не будет гарантировано, это будет означать, что начальное значение, полученное пакетом ресурсов, может быть возвращено при последующих вызовах, особенно если вы кэшируете начальное значение.Вы, вероятно, столкнетесь с таким поведением, даже если развернете разорванный WAR-файл, в котором вы сможете изменить содержимое файла свойств без повторного развертывания приложения, и поэтому важно использовать собственную реализацию ResourceBundle, которая не кэширует значения.