[Oracle ADF] Передать в popup параметр из ListView программно

Имеем listView, нужно, чтобы по клике на af:link в нем открывался popup и в него передавался параметр. В данном случае с помощью PageFlowScope.

<af:listView var="item"

    *******>

                <af:gridCell>
                    <af:link id="l6"
                             action="#{pageFlowScope.MyBean.doAction(item.item_value)}">
                    </af:link>
                </af:gridCell>


                *****

            </af:gridRow>
        </af:panelGridLayout>
    </af:listItem>
</af:listView>


public String doAction(Object item_value) {

    System.out.println("*********************************");
    System.out.println("item_value = " + item_value);
    System.out.println("*********************************");
    AdfFacesContext.getCurrentInstance().getPageFlowScope().put("p_item_value", item_value);
    RichPopup.PopupHints hints = new RichPopup.PopupHints();
    hints.add(RichPopup.PopupHints.HintTypes.HINT_LAUNCH_ID,this.p1);
    this.p1.show(hints);
    return null;
}


Popup:

<af:popup id="p1" contentDelivery="lazyUncached" eventContext="launcher" launcherVar="source"
          childCreation="deferred" binding="#{pageFlowScope.SomeBean.p1}"
          popupCanceledListener="#{pageFlowScope.SomeBean.closePopup}">
    <af:panelWindow id="pw1" closeIconVisible="false" modal="true" styleClass="fuse-popup">
        <af:region value="#{bindings.myTaskFlow1.regionModel}" id="r1"/>
    </af:panelWindow>
</af:popup>


То, что сгенерировалось jdeveloper’ом

<taskFlow id="myTaskFlow1" taskFlowId="/WEB-INF/myTaskFlow1.xml#myTaskFlow1"
              activation="deferred" xmlns="http://xmlns.oracle.com/adf/controller/binding" Refresh="ifNeeded">
      <parameters>
        <parameter id="p_item_value" value="#{pageFlowScope.p_item_value}"/>
      </parameters>
    </taskFlow>


    <input-parameter-definition id="__3">
          <name>p_item_value</name>
          <value>#{pageFlowScope.p_item_value}</value>
          <class>java.lang.Integer</class>
          <required/>
    </input-parameter-definition>


В нашем случае вызывается еще и execute with params с этим полем.

<bindings>
  <action IterBinding="OrdheadViewIterator" id="ExecuteWithParams" RequiresUpdateModel="true"
          Action="executeWithParams" InstanceName="AppModuleDataControl.OrdheadView"
          DataControl="AppModuleDataControl">
    <NamedData NDName="p_item_value" NDValue="#{pageFlowScope.p_item_value}" NDType="java.lang.Integer"/>
  </action>
</bindings>


Можно также получить всю выбранную строку следующим образом:

<af:gridCell>
    <af:link id="l6"
             action="#{pageFlowScope.MyMethod.doAction(item)}">
    </af:link>
</af:gridCell>


Сначала посмотрели какой класс получается:

public String doAction(Object object) {

    System.out.println("*********************************");
    System.out.println("ORDER_NO = " + object.getClass());
    System.out.println("*********************************");

}

И дальше уже модифицировали метод следующим образом:

public String doAction(FacesCtrlHierNodeBinding object) {

    System.out.println("*********************************");
    System.out.println("Attribute_1 = " + object.getAttribute("Attribute_1"));
    System.out.println("Attribute_2 = " + object.getAttribute("Attribute_2"));
    System.out.println("*********************************");

    ****
}

Т.к. мне нужна дата, пришлось делать следующим образом:

java.sql.Date myDate = new java.sql.Date(((Timestamp)object.getAttribute("myDate")).getTime());