1

このプロジェクトでは、ポートレット プロジェクトの JSR バージョンを (168 から 286 に) 変更しています。すべてのポートレットは Faceポートレットであり、使用される 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 は正しく行われますが更新されません。他に詳細が必要な場合はお知らせください。前もって感謝します。

4

2 に答える 2

1

Rational Application Developer v9.0 ヘルプに は、同様のシナリオを説明するエントリ「Navigating to a different page in JSF portlet」が含まれています。

于 2013-07-31T21:05:23.643 に答える