Короткий ответ: портлет не является страницей, и к моменту отображения портлета тема уже определена, поэтому вы не можете сделать это в портлете. Извините, если это очевидно для вас, но я просто работаю над этой проблемой.
Более длинный ответ заключается в том, что, поскольку Liferay разработан с учетом индивидуальных требований, все возможно, это зависит только от того, как это можно сделать. В этом случае мое лучшее предположение состоит в том, что вам нужно что-то запустить непосредственно перед тем, как сервлет Liferay создаст страницу, и при просмотре файла portal.properties есть назначенная точка расширения servlet.service.events.pre
. Сначала вам нужен способ сохранить начальный выбор страницы, но как только вы это сделаете, вы можете прочитать его в своем пользовательском классе и настроить тему для этого экземпляра. Может быть.
Я предполагаю, что вы будете вынуждены сохранить выбор темы в HttpSession, но есть также возможность, что вы можете либо передать выбор темы в URL в качестве параметра HTTP, либо даже использовать значение заголовка HTTP REFERRER чтобы найти, откуда они пришли.
Полезно?