在我们的项目中,我们正在更改 Portlet 项目的 JSR 版本(从 168 到 286)。所有的portlet 都是faces portlet,使用的jsf 版本是jsf1.2。我们有几个模块,但结构几乎相同。它们是左侧的 portlet,它们充当用户的左侧导航。在右侧,我们有托管各种应用程序功能的主要 portlet。IPC 用于将这些选定的值从左侧 Portlet 发送到右侧 Portlet,并相应地为右侧的 Portlet 设置视图。
在 portlet 的 processEvent 方法中,目标 portlet 的视图是根据接收到的值设置的。示例 processEvent 方法如下:
public void processEvent(EventRequest request, EventResponse response) throws PortletException, java.io.IOException
{
super.processEvent(request, response);
Event sampleEvent = request.getEvent();
if(sampleEvent.getName().toString().equals("ProcessEvent")) {
Object sampleProcessObject = sampleEvent.getValue();
System.out.println("Message Received : " + sampleProcessObject.toString());
TargetPortletView obj = (TargetPortletView) request.getPortletSession().getAttribute("pc_TargetPortletView"); // Managed Bean associated with the target Page
obj.setMessage(sampleProcessObject.toString());
request.getPortletSession().setAttribute("com.ibm.faces.portlet.page.view","/TargetPortletView.jsp");//Target JSP is set
}
}
但是,如果在目标 jsp 中发生了一些面导航,并且视图被重定向到不同的 jsp(例如 A.jsp->B.jsp->C.jsp)。再一次,如果从左侧 portlet 进行选择,右侧 portlet 的视图保持不变,并且不会更新,尽管 IPC 正确发生。如果需要任何其他详细信息,请告诉我。提前致谢。