gpt4 book ai didi

java - 使用liferay和icefaces的Portlet数据共享

转载 作者:行者123 更新时间:2023-12-01 16:08:36 27 4
gpt4 key购买 nike

我使用的是liferay 1.8.2 和liferay 5.2。我在不同的 war 文件中有许多 portlet,并且我尝试了 liferay 文档中的示例,了解如何在多个 war 中的不同 portlet 之间共享数据,但没有成功。

  1. 通过 session 共享,我无法将数据从第一个 portlet 获取到第二个 portlet,即使数据位于 portletsession 应用程序范围内。
  2. 当我使用基于偶数的机制时,当我使用 <portlet:defineObjects /> and <portlet:actionURL />标签

Caused by: javax.faces.FacesException: Failed to execute JSP lifecycle.
at com.icesoft.faces.webapp.parser.Parser.parse(Parser.java:181)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:439)
... 189 more Caused by: javax.servlet.jsp.JspException: java.lang.reflect.InvocationTargetException
at com.liferay.taglib.portlet.ActionURLTag.doEndTag(ActionURLTag.java:212)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:246)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.parse(Parser.java:162)
... 190 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:180)
at com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:49)
at com.liferay.taglib.portlet.ActionURLTag.doTag(ActionURLTag.java:179)
at com.liferay.taglib.portlet.ActionURLTag.doEndTag(ActionURLTag.java:200) ... 199 more
Caused by: javax.servlet.jsp.JspException: java.lang.UnsupportedOperationException
at com.liferay.portal.servlet.taglib.portlet.ActionURLTagUtil.doEndTag(ActionURLTagUtil.java:174)
... 207 more
Caused by: java.lang.UnsupportedOperationException
at com.icesoft.faces.webapp.parser.StubHttpServletRequest.getAttribute(StubHttpServletRequest.java:116)
at com.liferay.portal.servlet.taglib.portlet.TagUtil.getPortletName(TagUtil.java:100)
at com.liferay.portal.servlet.taglib.portlet.ActionURLTagUtil.doEndTag(ActionURLTagUtil.java:68)

任何人都可以通过详细的解释和示例代码来建议我如何在驻留在不同 WAR 的 portlet 之间实现 IPC

最佳答案

使用 IceFaces 1.8.x 无法在不同的 WAR 之间进行 Portlet 间通信 (IPC)。

当 IceFaces 2.0 发布时,这是可能的,Alpha 版本已经可用。

但是,可以使用 IceFaces 1.8.x 执行某种 IPC。 Icefaces 开发者指南的“高级主题”章节涵盖了以下主题:

The use of Ajax Push allows portlets to be updated based on server-side events that change the state of the current view. This can be a powerful feature that can also be leveraged to do a form of interportlet communication (IPC) in certain configurations.

IPC is only mentioned in the Portlet 1.0 spec (JSR 168) but is formally defined in the Portlet 2.0 specification (JSR 286).

It is architected as an Event/Listener model. However, it is possible to use the ICEfaces Ajax Push mechanism to update portlets based on changes to the underlying model. The way to do this currently with ICEfaces is to:

  • Deploy the portlets that need to communicate in the same archive (.war file).
  • Use application-scoped beans to manage shared state between the
    portlets.
  • Use the ICEfaces Ajax Push feature to trigger client updates
    when the shared state changes.
  • For an example of how to do this, review the sample ICEfaces Chat portlet.

关于java - 使用liferay和icefaces的Portlet数据共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com