1

我想在代码运行时使用一些等待对话框/图标/图像。代码完成后要停止该图标。我浏览了网上可用的材料,但未能获得或理解。

我正在使用在后端调用代理的 SSJS 脚本。处理过程需要 20-30 秒。

我已经通过了,但不知道利用率?

https://openntf.org/XSnippets.nsf/snippet.xsp?id=bootstrap-standby-dialog

http://xpagesera.blogspot.com/2012/05/add-ajax-loading-control-in-xpages-for.html

http://lotusnotus.com/lotusnotus_en.nsf/dx/xpages-tip-a-modal-waiting-dialog-for-background-processes..htm

我已经尝试了以下它在 IBM Notes 9.0.1 的浏览器中运行良好,但在 XPiNC 中无法运行。在我使用 One UI V 2.1 的地方,它在 XPiNC 或 Web 客户端中不起作用。

   <xp:this.resources>
        <xp:dojoModule name="extlib.dijit.ExtLib"></xp:dojoModule>
        <xp:dojoModule name="extlib.dijit.Loading"></xp:dojoModule>
   </xp:this.resources>

在事件处理程序中,我在页面上使用了以下事件并进行了部分刷新。

   <xp:this.onStart><![CDATA[XSP.startAjaxLoading()]]></xp:this.onStart>
   <xp:this.onComplete><![CDATA[XSP.endAjaxLoading()]]></xp:this.onComplete>
   <xp:this.onError><![CDATA[XSP.endAjaxLoading()]]></xp:this.onError>

如何通过在客户端和 One UI 2.1 上使用此代码来实现此功能。

我非常感谢您在我最初的问题上收到的回复,并希望得到同样的答复。

最好的问候, Qaiser Abbas

4

2 回答 2

1

使用第一个选项(这可能需要引导程序,因此是 OpenNTF 版本的扩展库),这是一个自包含的自定义控件,可以自动劫持任何部分刷新并添加加载掩码。如果您点击之前版本的链接,它会给出实现说明:

“将此添加到自定义控件并将其添加到您的 xpages 以在每次部分刷新时获得待机对话框”

后两个链接是更多的手动选项。onStart和是 EventHandler 的onError属性。onComplete您不能从包含 EventHandler 的组件(例如按钮、编辑框等)访问它们。您需要转到源窗格,单击 EventHandler 本身,然后会弹出EventHandler属性的 All Properties 框,而不是包含 EventHandler 的组件

于 2016-11-22T13:17:31.857 回答
0

这是您的第二个链接的 XPage 示例Add AJAX “Loading..” control in XPages for Partial Updates

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" style="margin:200px">
    <xp:this.resources>
        <xp:dojoModule name="extlib.dijit.Loading" />
    </xp:this.resources>
    <xp:button id="button1" value="Show time in 3 seconds">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="partial"
            refreshId="panel1">
            <xp:this.action><![CDATA[#{javascript:
                viewScope.clickTime = new Date();
                var waitUntil = viewScope.clickTime.getTime() + 3000; 
                while(waitUntil > new Date().getTime()) {
                    // wait 3 seconds
                }
            }]]></xp:this.action>
            <xp:this.onStart><![CDATA[XSP.startAjaxLoading()]]></xp:this.onStart>
            <xp:this.onComplete><![CDATA[XSP.endAjaxLoading()]]></xp:this.onComplete>
            <xp:this.onError><![CDATA[XSP.endAjaxLoading()]]></xp:this.onError>
        </xp:eventHandler>
    </xp:button>
    <xp:panel id="panel1">
        <xp:text
            escape="true"
            id="computedField1"
            value="#{viewScope.clickTime}"
            style="font-size:48pt">
            <xp:this.converter>
                <xp:convertDateTime type="both" />
            </xp:this.converter>
        </xp:text>
    </xp:panel>
</xp:view>

当您单击按钮时,它会显示“请稍候...”三秒钟,然后是单击按钮的时间。

确保您设置refreshMode="partial"了按钮的 eventHandler 和有效的 refreshId。

于 2016-11-22T20:14:54.177 回答