[Oracle ADF] Popup with panelWindow
<af:link id="l15" action="show_item_detail"
text="#{item.bindings.ItemDesc.inputValue}"
styleClass="minor-link" clientComponent="true">
<af:clientAttribute name="prm_item"
value="#{item.bindings.Item.inputValue}"/>
<af:showPopupBehavior popupId="::p1"
triggerType="action"/>
</af:link>
<af:popup id="p1" contentDelivery="lazyUncached" launcherVar="source" eventContext="launcher"
popupFetchListener="#{Update.deptPopUpFetchListener}">
<af:setPropertyListener from="#{source.attributes.prm_item}" to="#{pageFlowScope.p_item}"
type="popupFetch"/>
<af:panelWindow id="pw1" modal="true" styleClass="fuse-popup" closeIconVisible="false">
<af:region value="#{bindings.itemdetailtaskflow1.regionModel}" id="r1"/>
</af:panelWindow>
</af:popup>
public void deptPopUpFetchListener(PopupFetchEvent popupFetchEvent) {
System.out.println("======================");
System.out.println("POPUP POPUP POPUP");
System.out.println("======================");
}
http://docs.oracle.com/cd/E23549_01/apirefs.1111/e12419/tagdoc/af_popup.html
Продолжаем копать popup
<af:popup id="p2" contentDelivery="lazyUncached" eventContext="launcher" launcherVar="source"
popupFetchListener="#{Update.deptPopUpFetchListener1}"
attributeChangeListener="#{Update.deptPopUpFetchListener2}"
popupCanceledListener="#{Update.deptPopUpFetchListener3}">
<af:setPropertyListener from="#{source.attributes.p_income_parameter}" to="#{pageFlowScope.p_income_parameter}"
type="popupFetch"/>
<af:panelWindow id="pw1" closeIconVisible="false" modal="true" styleClass="fuse-popup">
<af:region value="#{bindings.supplierdetailtaskflow2.regionModel}" id="r1"/>
</af:panelWindow>
</af:popup>
Могуть быть listeners:
- popupFetchListener
- attributeChangeListener
- popupCanceledListener
Мне нужно передать данные из #{source.attributes.p_income_parameter} в бин. Хз пока как это сделать и вообще как это лучше сделать.
Копание привело к следующим выводам:
Значение переменной myVar устанавливается уже после того как вызывается deptPopUpFetchListener.
Поэтому она имеет либо null значение, либо выбранное ранее. Как добиться того, чтобы передавалось текущее я не нашел. Вроде попробовал все имеющиеся варианты из предоставленных вариантов. Код приведен ниже. Буду признателен за помощь. Стандартный компонент, наверное нужно делать каким-то другим способом.
<af:popup id="p2" contentDelivery="lazyUncached" eventContext="launcher" launcherVar="source"
popupFetchListener="#{Update.deptPopUpFetchListener}"
binding="#{Update.richpopup}">
<af:setPropertyListener from="#{source.attributes.p_income_parameter}" to="#{Update.myVar}"
type="popupFetch"/>
<af:panelWindow id="pw1" closeIconVisible="false" modal="true" styleClass="fuse-popup">
<af:region value="#{bindings.supplierdetailtaskflow2.regionModel}" id="r1"/>
</af:panelWindow>
<af:outputText value="#{source.attributes.p_income_parameter}" id="ot8"/>
</af:popup>
private String myVar;
public void setMyVar(String myVar) {
this.myVar = myVar;
}
public String getMyVar() {
return myVar;
}
public void deptPopUpFetchListener(PopupFetchEvent popupFetchEvent) {
System.out.println("======================");
System.out.println("POPUP");
System.out.println("======================");
System.out.println("========== myVAR ============");
System.out.println(myVar);
System.out.println("========== END ============"); }
Наткнулся при чтении в Fusion Developer Guide, нужно будет потом проверить!
UPD
Возможное решение
https://oracle-adf.ru/dev/view/uic/get-selected-element-programmatically/