Портлет Обмен данными с использованием liferay и icefaces

Я использую liferay 1.8.2 и liferay 5.2. У меня есть много портлетов в разных военных файлах, и я безуспешно пробовал примеры из документации Liferay о том, как обмениваться данными между различными портлетами в нескольких войнах.

  1. Когда я использую механизм на основе даже, я получаю сообщение об ошибке при использовании тегов <portlet:defineObjects /> and <portlet:actionURL />
  2. Связь между портлетами (IPC) невозможна между разными WAR с использованием IceFaces 1.8.x.

Может ли кто-нибудь предложить с подробным объяснением и примером кода, как я могу достичь IPC между портлетами, находящимися в разных WAR?

При совместном использовании сеанса мне не удалось передать данные из первого портлета во второй портлет, даже если данные находились в области приложения сеанса портлетов.


person Ben    schedule 09.01.2010    source источник
comment
Причина: javax.faces.FacesException: не удалось выполнить жизненный цикл JSP.
на com.icesoft.faces.webapp.parser.Parser.parse(Parser.java:181)
на com.icesoft.faces.application .D2DViewHandler.renderResponse(D2DViewHandler.java:439)
... еще 189 Причина: javax.servlet.jsp.JspException: java.lang.reflect.InvocationTargetException
на com.liferay.taglib.portlet.ActionURLTag .doEndTag(ActionURLTag.java:212)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:246)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle (Parser.java:229)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser .java:229)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java :229)
на com.icesof t.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
на com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
на com.icesoft. Faces.webapp.parser.Parser.parse(Parser.java:162)
... еще 190
Причина: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method. invoke(Method.java:597)
на com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:180)
на com.liferay.portal.kernel.util.MethodInvoker.invoke( MethodInvoker.java:49)
на com.liferay.taglib.portlet.ActionURLTag.doTag(ActionURLTag.java:179)
на com.liferay.taglib.portlet.ActionURLTag.doEndTag(ActionURLTag.java:200) ... 199 м ore
Вызвано: javax.servlet.jsp.JspException: java.lang.UnsupportedOperationException
на com.liferay.portal.servlet.taglib.portlet.ActionURLTagUtil.doEndTag(ActionURLTagUtil.java:174)
. .. Еще 207
Причина: java.lang.UnsupportedOperationException
на com.icesoft.faces.webapp.parser.StubHttpServletRequest.getAttribute(StubHttpServletRequest.java:116)
на com.liferay.portal.servlet .taglib.portlet.TagUtil.getPortletName(TagUtil.java:100)
на com.liferay.portal.servlet.taglib.portlet. ActionURLTagUtil.doEndTag(ActionURLTagUtil.java:68)   -  person Sylar    schedule 21.01.2010


Ответы (1)


Это станет возможным, когда выйдет IceFaces 2.0, альфа-версия уже доступна.

Тем не менее, с помощью IceFaces 1.8.x можно выполнить своего рода IPC. Глава «Дополнительные темы» руководства для разработчиков Icefaces посвящена этой теме:

Использование Ajax Push позволяет обновлять портлеты на основе событий на стороне сервера, которые изменяют состояние текущего представления. Это может быть мощной функцией, которую также можно использовать для осуществления связи между портлетами (IPC) в определенных конфигурациях.

IPC упоминается только в спецификации Portlet 1.0 (JSR 168), но формально определяется в спецификации Portlet 2.0 (JSR 286).

Он разработан как модель Event/Listener. Однако можно использовать механизм ICEfaces Ajax Push для обновления портлетов на основе изменений базовой модели. В настоящее время с помощью ICEfaces это можно сделать следующим образом:

Разверните портлеты, которые должны обмениваться данными, в одном архиве (файл .war).

  • Используйте bean-компоненты уровня приложения для управления общим состоянием портлетов
    .
  • Используйте функцию ICEfaces Ajax Push для запуска обновлений клиента
    при изменении общего состояния.
  • Пример того, как это сделать, см. в образце портлета чата ICEfaces.
  • Зачем задавать глупые вопросы, если вам не нужен ответ?
person Sylar    schedule 11.01.2010