2013-05-31 3 views
1

프로젝트에서 우리는 JSR 버전 (168에서 286까지)의 포틀릿 프로젝트를 변경하고 있습니다. 모든 포틀릿은 이며 포틀릿은이고 사용 된 jsf 버전은 jsf1.2입니다. 우리는 여러 모듈을 가지고 있지만 구조는 거의 같습니다. 그것들은 왼쪽에있는 포틀릿이며, 사용자를위한 왼쪽 탐색 역할을합니다. 오른쪽에는 다양한 애플리케이션 기능을 제공하는 기본 포틀릿이 있습니다. 왼쪽 된 포틀릿에서 오른쪽 포틀릿으로 선택된 값을 전송하기 위해 IPC가 사용되고 따라서보기가 오른쪽의 포틀릿에 설정됩니다.얼굴 포틀릿 탐색 - 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가 제대로 발생하더라도 오른쪽 포틀릿의보기는 동일하게 유지되고 업데이트되지 않습니다. 다른 세부 정보가 필요한지 알려주십시오. 미리 감사드립니다.

답변

1

합리적인 응용 프로그램 개발자 - XXXXXXXXXX이고, 당신은 당신이 (적절한 변화를 탐색 아래 규칙 참조)로드 할 얼굴 페이지에 매핑되는 얼굴의 결과로 정의한 문자열을 대체 v9.0 도움말에는 유사한 시나리오를 설명하는 Navigating to a different page in JSF portlet 항목이 있습니다.

0

NavigationHandler를 사용하여 대상 포틀릿의보기를 재설정해야합니다. 다음 코드와 같은 것을 사용하십시오.

// Reset view 
FacesContext facesContex = FacesContext.getCurrentInstance(); 
NavigationHandler nav = facesContext.getApplication().getNavigationHandler(); nav.handleNavigation(facesContext, null, **xxxxxxxxxxx**); 
        facesContext.renderResponse(); 
        super.saveViewState(facesContext); 

        facesContext.release(); 

----------- 
in faces-config: 

    <navigation-rule> 
     <from-view-id>/pages/*</from-view-id> 
     <navigation-case> 
      <from-outcome>reset</from-outcome> 
      <to-view-id>/TargetPortletView.jsp</to-view-id> 
     </navigation-case> 
    </navigation-rule> 
+0

zarfarf - 답장을 보내 주셔서 감사합니다. 내가 공유 한 접근 방식을 이해했습니다. 그러나 문제는 고정 된 대상 페이지 (예 : /TargetPortletView.jsp)가 없기 때문에 "to-view-id"가 시나리오마다 다를 수 있다는 것입니다. 따라서 IPC를 통해받은 입력을 기반으로 processEvent 메소드에서 동적으로 대상보기 ID를 설정하는 메커니즘이 필요합니다. –