我正在WebSphere Portal 7上使用JSF 1.2开发JSR 286 portlet。我一直在尝试找到在同一页面上的两个portlet之间进行导航的方法。本质:
- 单击Portlet a上的按钮。
- Portlet B导航到不同的视图(基于来自Portlet a的信息),而Portlet a保持与以前相同的视图。
它们使用相同的源,所以我认为我可以通过使用PhaseListener和portlet名称空间id来完成这一点—我已经在某种程度上使其工作,但我不禁认为必须有更好的方法来做到这一点。
在我继续这条路线之前,有人知道我在两个portlet之间进行导航的正确方法吗?
我为使portlet通信所做的一件常见的事情是使用事件。在您的示例中,您将设置Portlet A来发布您的buttonClick事件,并设置Portlet B来处理buttonClick事件。在Portlet B中,您将设置一些呈现参数,然后在doView中使用它来根据需要更新UI。您还需要在两个portlet之间创建一条连接。
这里是IBM关于portlet通信的文档的链接。里面可能会有更适合你的想法,或者给你更多的灵感。
http://www - 10. - lotus.com/ldd/portalwiki.nsf/xpdocviewer.xsp?lookupname=ibm WebSphere +门户+ 7 +产品+文档+ # action = openDocument& res_title = Portlet_communication_wp7&内容= pdcontent
看一下Liferay Faces Portlet Bridge演示。
"JSF2 IPC(事件)-客户"演示可能是您正在寻找的。为什么还在使用JSF 1.2?即使在WebSphere Portal 7和WAS 7上也可以使用JSF 2.0。只需使用Mojorra库和PARENT_LAST类加载。