В нашем проекте мы меняем версию JSR (со 168 на 286) проектов портлетов. Все портлеты являются портлетами Faces, а используемая версия jsf — jsf1.2. У нас есть несколько модулей, но структура почти одинакова. Это портлеты с левой стороны, они действуют как левая навигация для пользователей. С правой стороны у нас есть основные портлеты, в которых размещены различные функции приложения. IPC используется для отправки этих выбранных значений из левого портлета в правый портлет, и соответственно представление устанавливается для правого портлета.
В методе processEvent портлетов представление целевого портлета задается на основе полученных значений. Пример метода 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). Затем снова если выбор сделан из левого портлета, вид правого портлета остается прежним и не обновляется, хотя IPC происходит правильно. Пожалуйста, дайте мне знать, если потребуются какие-либо другие подробности. Заранее спасибо.