В нашем проекте мы меняем версию JSR (от 168 до 286) проектов портлетов. Все портлеты - - портлеты и версия jsf - jsf1.2. У нас есть несколько модулей, но структура почти такая же. Их портлеты в левой стороне, они действуют как левая навигация для пользователей. С правой стороны у нас есть основные портлеты, в которых размещаются различные функции приложения. IPC используется для отправки этих выбранных значений из левого портлета в правый портлет и, соответственно, для портлета справа отображается представление.Faces Portlet Navigation - WebSphere Portal - JSR 286
В способе 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 происходит правильно. Пожалуйста, дайте мне знать, если требуются какие-либо другие детали. Заранее спасибо.
zarfarf - Спасибо за ответ. Я понял подход, которым вы поделились. Но проблема в том, что у нас нет фиксированной целевой страницы (например, /TargetPortletView.jsp), поэтому «to-view-id» будет отличаться от одного сценария к другому. Таким образом, нам нужен механизм для динамического определения идентификатора целевого представления из метода processEvent на основе входных данных, которые мы получаем через IPC. –