如何在ADF Mobile的时间间隔内关闭弹出行为?

时间:2014-06-18 14:24:19

标签: java javascript oracle-adf oracle-adf-mobile

我正在使用closePopupBehavior关闭弹出窗口。如何在调用弹出窗口后5秒内关闭弹出窗口。

以下是我的amx页面

<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx"
      xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt">
<amx:panelPage id="pp1">
<amx:facet name="header">
  <amx:outputText value="Header" id="ot1"/>
</amx:facet>
<amx:facet name="primary">
  <amx:commandButton id="cb1"/>
</amx:facet>
<amx:facet name="secondary">
  <amx:commandButton id="cb2"/>
</amx:facet>
 <amx:commandButton text="Show popup - using Java" id="cb3" actionListener="#{test.btnClick}">
 <amx:showPopupBehavior id="spb1" popupId="p1" align="after" alignId="cb3"/>  </amx:commandButton>
 </amx:panelPage>
 <amx:popup id="p1">
    <amx:panelGroupLayout id="pgl2" layout="vertical">
        <amx:outputText value="I am called from java." id="ot2"/>
    </amx:panelGroupLayout>
    <amx:commandButton text="Close" id="cb5">
        <amx:closePopupBehavior id="cpb1" popupId="p1" type="action"/>
    </amx:commandButton>
 </amx:popup>
 </amx:view>

以下是我的Managed Bean

public class TestBean{
    public void btnClick(ActionEvent actionEvent) {

    AdfmfContainerUtilities.invokeContainerJavaScriptFunction("feature1",
                                                                     "showPopup",
                                                                      new Object[] {} );
}
}

如果可以通过使用javascript关闭也发布你的答案。非常感谢你

1 个答案:

答案 0 :(得分:0)

我看到你正在使用Jobinesh http://www.jobinesh.com/2013/12/adfmobile-programatically-invoking.html中提到的例子。

为了在让我们说5秒之后关闭弹出窗口,您需要在JS文件中添加以下功能

(function () {
    hidePopup = function () {

        var element = document.getElementById("cb5");
        customTriggerEvent(element, "touchstart");
        customTriggerEvent(element, "touchend");
    }

    var customTriggerEvent = function (eventTarget, eventType, triggerExtra) {
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(eventType, true, true);
        evt.view = window;
        evt.altKey = false;
        evt.ctrlKey = false;
        evt.shiftKey = false;
        evt.metaKey = false;
        evt.keyCode = 0;
        evt.charCode = 'a';
        if (triggerExtra != null)
            evt.triggerExtra = triggerExtra;
        eventTarget.dispatchEvent(evt);
    };

})();

其中&#34; cb5&#34;是closePopupBehavior按钮的id,在showPopup JS函数的末尾,您需要添加以下行

setTimeout(function(){hidePopup();}, 5000);