Как параметризовать портлеты на лету? - PullRequest
1 голос
/ 04 октября 2011

Портлеты имеют режим РЕДАКТИРОВАНИЯ, и именно так мы можем их параметризовать.

Мой вопрос заключается в том, как лучше всего параметризовать портлет точно в тот момент, когда он загружен программно.

Например: я хочу, чтобы Liferay загрузил два экземпляра портлета с определенным идентификатором, один с paramA, второй с paramB.

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

Чтобы загрузить различные параметры (более известные в Liferay как «Параметры портлета»), вы можете использовать PortletPreferences для хранения и получения различных параметров,

PortletPreferences preferences =
    PortletPreferencesFactoryUtil.getPortletSetup(
        request, portletId);

Завод * принимает 2 параметра,

  • Запрос - Запрос.
  • PortletId - Идентификатор вашего портлета (например, "name_WAR_myportlet_INSTANCE_ABCD").

С этим объектом вы можете получить параметры:

String myValue = preferences.getValue("my-value");

И вы можете хранить значения:

preferences.setValue("my-value", "this-value");
preferences.store();
1 голос
/ 05 октября 2011

"Liferay embed portlets" дает хороший базовый поиск по тому, что я интерпретирую ваш вопрос (но мне это не совсем понятно).

С этим я нахожу хиты типа Встраивание портлетов вваш портлет и Встраивание портлетов в веб-контент , которые, кажется, совпадают.

Если это не так, я повторяю комментарий Brandizzi: Пожалуйста, дайте проблему высокого уровня (которую вы должны решить вбизнес-термины) вместо предложенного решения (для которого вам нужны технические детали, даже если это плохое решение для исходной проблемы)

0 голосов
/ 06 октября 2011

Вы можете использовать параметры URL.

Я опишу два подхода.

1) Используйте разные параметры для каждого портлета, но вы должны сконфигурировать каждый портлет (параметры портлета) с именем параметра, который нужно искать (отличается для каждого портлета).

final String parameter = p_request.getPreferences().getValue("parameterName", null));

javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(parameter);


пример использования: http://www.myserver.com/mypagewithportlets?param1=something1&param2=somethnig2


2) Используйте параметр с префиксом пространства имен портлета, но при использовании параметров вам нужно знать идентификаторы портлета (napespace - это идентификатор портлета с префиксом = суффиксом = _)

javax.servlet.http.HttpServletRequest request = com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest(p_request));
final String paramValue = request.getParameter(p_response.getNamespace() + "myparameter");


пример использования: http://www.myserver.com/mypagewithportlets?_name_WAR_myportlet_INSTANCE_xzy1_myparameter=something1&_name_WAR_myportlet_INSTANCE_syhs_myparameter=somethnig2


Просто примечание
p_request реализует javax.portlet.PortletRequest
p_response реализует javax.portlet.PortletResponse

...