提交(登录)时如何显示“请稍候”消息

时间:2014-04-01 10:22:12

标签: modal-dialog xpages

我通过JsonRpcService运行一些代码时使用an来显示消息。像魅力一样。

现在,我想要显示一条类似的消息说"请稍候......"当用户提交页面时。在这种特殊情况下,它正在登录 - 我需要读取大量数据来向用户显示。当用户按下图标(=按钮)时,我在自定义控件中提交登录信息:

<xp:image url="/arrowGrey.png" id="submitButton" styleClass="submitButton" alt="Login" title="Login">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:Logon.submit()}]]></xp:this.action>
        <xp:this.onStart><![CDATA[console.log('Start login');
setTimeout(function () {
    XSP.openDialog('#{id:working}');
}, 300);]]></xp:this.onStart>
    </xp:eventHandler>
</xp:image>

登录是托管bean。但是,我从来没有看到对话框... - 也没有&#34;开始登录&#34;消息?

的定义是:

<xe:dialog id="working" styleClass="inProgress">
    <xp:div>
    <xp:text escape="true" id="computedField1" tagName="h2" value="Logging in. Please wait..."></xp:text>
    </xp:div>
</xe:dialog>

关于如何获得这个的任何想法?

明显的下一个挑战是,如果Logon.submit()验证失败并将用户保留在当前页面上,则关闭对话框......: - )

2 个答案:

答案 0 :(得分:1)

如果您正在进行完全刷新,则备用小部件将无法运行。它只适用于部分刷新,因为完全刷新将重新加载页面上的所有内容。但是备用小部件正在使用您可以使用的标准Dojo函数。

或者当我有一些需要执行的代码时,我通常会做什么。我将用户发送到&#34;请等待XPage&#34;用GIF动画。 诀窍是代码无法在页面和gif加载之前开始执行,因此我将代码添加到隐藏按钮,在onload事件中,我使用执行后端代码的客户端JS单击此按钮。 当我完成处理时,我使用context.reloadPage

将它们发送到正确的页面

这非常有效。

答案 1 :(得分:0)

Fredrik Norling创建了非常酷的“待机自定义控件”(http://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control)。它不显示消息,而是在每次部分刷新时显示一个旋转等待图标,可能会持续200ms(如果您愿意,可以向下或向上调整)。