xpages 中的等待图标/消息

Waiting icon / message in xpages

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

我正在使用在后端调用代理的 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>

如何在两个客户端和一个客户端上使用此代码实现此功能 UI 2.1.

非常感谢您对我最初的问题的答复,我也期待您的答复。

此致, 凯撒·阿巴斯

使用第一个选项(这可能需要 bootstrap,因此是扩展库的 OpenNTF 版本),这是一个独立的自定义控件,可以自动劫持任何部分刷新并添加加载掩码。如果按照link上一个版本,给出了实现说明:

"Add this to a custom control and add that to your xpages to get a standby dialog on every partial refresh"

后两个 link 是更多手动选项。 onStartonErroronComplete 是 EventHandler 的属性。您不能从包含事件处理程序的组件(例如按钮、编辑框等)访问它们。您需要转到源代码窗格,单击 EventHandler 本身,然后会弹出 EventHandler 而非 Component[= 的属性的所有属性框21=] 包含事件处理程序。

这是您的第二个 XPage 示例 link 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>

当您点击按钮时,它会显示 "Please wait..." 三秒钟,然后是按钮点击的时间。

确保在按钮的事件处理程序中设置 refreshMode="partial" 和有效的 refreshId。