Liferay 4.2.2 themes handling bug |
|
для версии 4.2.2 Liferay Portal зафиксирована не корректная работа с идентификаторами портальных тем, развернутых как внешние WAR-приложения с помощью механизма автоматического развертывания компонентов портала (тем, шаблонов расположения и портлетов). проблема ошибка заключается в возникновении java.lang.NullPointerException (далее NPE) при обращении к настройкам вида и поведения созданного комьюнити/группы/пользователя при установке темы, развернутой как внешнее WAR-приложение (далее Тема), в качестве темы используемой по умолчанию. после исследования проблемы, определено, что источником ошибки является не корректная работа с идентификатором темы. причины возникновения для всех компонентов, развернутых с использованием механизма авто-развертывания, Liferay Portal генерирует сложные идентификаторы по шаблону <theme-id>_WAR_<web.xml_display_name>. к примеру если тема имеет theme-id=foo, определенный в liferay-look-and-feel.xml, и display-name=bar, определенный в web.xml, то конечный идентификатор Темы в Liferay Portal будет foo_WAR_bar. стандартная документация, в частности статья, описывает изменение параметров, установленных по-умолчанию, с использованием идентификатора темы в том виде, в котором он определен в liferay-look-and-feel.xml (для примера приведенного выше -- foo). однако, API портала не обрабатывает идентификатор для Тем и использует его значение из portal(-ext).properties без изменений. таким образом, происходит попытка обращения к несуществующей Теме и возникает NPE. решение для решения данной проблемы необходимо определять идентификатор темы в portal(-ext).properties с учетом его автоматической модификации внутри портала. иными словами, значение параметра default.theme.id должно быть не theme_id, а <theme_id_WAR_<web.xml_display_name>. дла описанного выше примера соотвественно -- не default.theme.id=foo, а default.theme.id=foo_WAR_bar. для использования произвольной Темы, в качестве темы по-умолчанию, будет полезна следующая инструкция: 1. развернуть Тему следуя стандартному процессу. 2. авторизоваться в Liferay Portal как пользователь с правами администратора и установить Тему в качестве темы любого доступного компьюнити. 3. открыть базу данных портала в любом SQL-клиенте. 4. выполнить select themeId from layoutset where groupId = (select groupId from group_ where name = ) >, где community_name - имя комьюнити, где использована Тема. 5. использовать выбранный идентификатор, как значение параметра default.theme.id область распространения проблема выявлена для версии портала 4.2.2 и не тестировалась на других версиях. не исключено исправление ошибки в старших и отсутствие в младших версиях. для предустановленных тем портала стандартный механизм работает корректно. ссылки мой комментарий на форуме Liferay Portal(англ.) |
|
Рубрики: Рабочее Теги: javaj2eeportalsliferayopen source |
Обратиться Комментировать Подписаться Отписаться [+ в друзья] |
|
« Пред. запись — К дневнику — След. запись » | Комментарии: [Новые] |
|
« Пред. запись — К дневнику — След. запись » | Комментарии: [Новые] |