JavaServer Faces ライフサイクル・コンテキスト

このトピックでは、選択オブジェクト・インタラクターおよびリスナーをインストールするための JViews JSF コードを示します。 または、値変更イベント・リスナーを作成するための Java™ コードも示します。

JViews Diagrammer

ビューで SDM ノードを選択するためには、ダイアグラム・コンポーネント・ビューで選択オブジェクト・インタラクターをインストールする必要があります。 インタラクターの value プロパティーは、クリックされた IlvSDMNode オブジェクトを保持します。 したがって、valueChangeListener を登録して選択イベントを処理することができます。
選択ノードまたはリンク・インタラクターおよびリスナーのインストール
<jvdf:nodeOrLinkSelectInteractor id="objSelect"
     valueChangeListener="#{diagrammerBean.onSelectNode}"
                 invocationContext="JSF_CONTEXT"/>

<jvdf:diagrammerView id="diagrammer" interactorId="objSelect" [...] />
メモ
JSF_CONTEXT はデフォルト値であるため、invocationContext 属性が省略された可能性があります。
値変更イベントの Java コード
値変更イベント・リスナーの Java コードは次のとおりです。
  public void onSelectNode(ValueChangeEvent event) {
    IlvSDMNode node = (IlvSDMNode) event.getNewValue();
    if (node != null) {

         //The source of the event is the interactor
         IlvFacesNodeOrLinkSelectInteractor source =
              (IlvFacesNodeOrLinkSelectInteractor)valueChangeEvent.getSource();

               //Retrieve the JSF view connected to the interactor
               IlvFacesDiagrammerView jsfDiagrammer =
                 (IlvFacesDiagrammerView)source.getView();

      try {
        //Retrieve the IlvDiagrammer wrapped by the JSF component.
        IlvDiagrammer diagrammer = jsfDiagrammer.getDiagrammer();

                //Select the clicked object
        diagrammer.deselectAll();
        diagrammer.setSelected(node, true);

      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

JViews Framework レベル

JViews Framework レベルのビューでグラフィック・オブジェクトを選択するためには、そのビューで選択オブジェクト・インタラクターをインストールする必要があります。 インタラクターの value プロパティーは、クリックされた IlvGraphic オブジェクトを保持します。 したがって、valueChangeListener を登録して選択イベントを処理することができます。
選択オブジェクト・インタラクターおよびリスナーのインストール
<jvf:objectSelectInteractor id="objSelect"
     valueChangeListener="#{frameworkBean.selectObject}"
                 invocationContext="JSF_CONTEXT"/>

<jvf:view id="view" interactorId="objSelect" [...] />
メモ
JSF_CONTEXT はデフォルト値であるため、invocationContext 属性が省略された可能性があります。
値変更イベントの Java コード
値変更イベント・リスナーの Java コードは次のとおりです。
public void selectObject(ValueChangeEvent event) {
  Object value = event.getNewValue();
  if (value != null && value instanceof IlvGraphic) {

           //The source of the event is the interactor
           IlvFacesObjectSelectInteractor source =
                (IlvFacesObjectSelectInteractor)valueChangeEvent.getSource();

                //Retrieve the JSF view connected to the interactor
    IlvFacesView jsfView = (IlvFacesView)source.getView();

         //Retrieve the IlvManagerView wrapped by the JSF component.
    IlvManagerView managerView = jsfView.getView();

                //Select the clicked object
    IlvGraphic g = (IlvGraphic) value;
    managerView.getManager().deSelectAll(false);
    managerView.getManager().setSelected(g, true, false);
  }
}
このアプローチの使用に関しては次のことに注意してください。
  • JavaServer™ Faces ライフサイクルでメソッドが呼び出されるため、他の JSF コンポーネントとのインタラクションが行われることがあります。
  • フォームが送信されるため、完全なページが再ロードされます。