Ну, без подключения других частей Liferay вы не можете получить его там (в java-коде). Портлет «Portlet CSS» заполняется с помощью javascript, поэтому, по-видимому, нет необходимости отправлять идентификатор порта в качестве параметра.
Чтобы получить portletId, вы также должны подключить /html/js/liferay/look_and_feel.js
autoLoad: false,
showLoading: false,
data: {
p_l_id: themeDisplay.getPlid(),
p_p_id: 113,
p_p_state: EXCLUSIVE,
doAsUserId: themeDisplay.getDoAsUserIdEncoded()
},
uri: themeDisplay.getPathMain() + '/portal/render_portlet'
изменить его, чтобы было что-то вроде этого
autoLoad: false,
showLoading: false,
data: {
p_l_id: themeDisplay.getPlid(),
p_p_id: 113,
p_p_state: EXCLUSIVE,
doAsUserId: themeDisplay.getDoAsUserIdEncoded(),
_113_portletId: instance._portletId
},
uri: themeDisplay.getPathMain() + '/portal/render_portlet'
Были добавлены запятая и _113_portletId: instance._portletId.
После этого вы можете добавить к нему /html/portlet/portlet_css/view.jsp
String portletId = (String) renderRequest.getParameter("portletId");
portletId для издателя активов будет примерно таким: 101_INSTANCE_reKokSN3aDaL
portletId для отображения веб-контента будет выглядеть примерно так: 56_INSTANCE_dxNxXuQ7ZuvB
поэтому вы можете проверить, начинается ли portletId со 101, 56,...
Вы также можете получить объект Portlet с помощью
PortletLocalServiceUtil.getPortletById(portletId);
ОБНОВЛЕНИЕ (ответ на вопрос в комментарии):
Этот портлет не предназначен для такого использования, после загрузки он остается в формате html, а все изменения выполняются с помощью javascript.
Когда «Внешний вид» открывается в первый раз после загрузки страницы, делается запрос XHR на сервер и отображается «/html/portlet/portlet_css/view.jsp». Во второй раз (для другого портлета на той же странице) javascript подготавливает модальное окно для другого (или того же) портлета, "/html/portlet/portlet_css/view.jsp" больше не будет отображаться.
Чтобы принудительно выполнить повторную визуализацию "/html/portlet/portlet_css/view.jsp", снова измените "/html/js/liferay/look_and_feel.js".
после (в моем исходнике это строка 136)
if (!content) {
content = A.Node.create('<div class="loading-animation" />');
}
Добавь это
if (instance._currentPopup) {
A.one("#" + instance._currentPopup.get("id")).remove()
instance._currentPopup = null;
}
Это должно быть до
if (!instance._currentPopup) {
instance._currentPopup = Liferay.Util.Window.getWindow(
...
Очистите Liferay и кэш браузера.
person
Martin Gamulin
schedule
08.12.2016