xPages:对话框关闭时重定向到主页

xPages: redirect to home when dialog closes

我有一个联系表,我在其中使用在 OpenNTF 片段中找到的电子邮件 bean 来发送电子邮件。那部分效果很好。

电子邮件发送后,我会显示一个带有小消息的对话框,让用户知道消息已发送。我想做的是,一旦用户点击对话框上的关闭按钮,就将用户重定向到主页。

按钮中的代码如下:

<xp:button id="button1" value="Send">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="complete">
    <xp:this.action><![CDATA[#{javascript:try{
    //var sendTo = document1.getItemValueString("SendTo");
    var sendTo = AppConfig.getAppEmailAddress();
    //var subject = document1.getItemValueString("Subject");
    var subject = "Belair Docum: " + document1.getItemValueString("category") + " - " + document1.getItemValueString("Subject");
    //var senderEmail = "noreply@belairdirect.com";
    var senderName = userBean.abbreviatedName;
    emailBean.setSendTo(sendTo);
    emailBean.setSubject(subject);
    emailBean.setSenderEmail(senderName);
    emailBean.setSenderName(senderName);
    emailBean.setDocument(document1);
    emailBean.setFieldName("Body");
    emailBean.setBannerHTML("<p>Email sent from belair Docum 2.0</p><hr>");
    //emailBean.setFooterHTML("<hr><p>Email sent from belair Docum 2.0</p>");
    emailBean.send();

    var d = getComponent('dialog1');
    d.show();
}catch(e){
    print(e.getMessage());
}}]]></xp:this.action>
        </xp:eventHandler>
</xp:button>

我试图将其放入 Dialog 的 Dojo onClose 事件中,但它不起作用:

window.location.pathname = "/home.xsp"

这可能是刷新问题,还是我没有使用正确的事件,或者我需要使用不同的代码?

谢谢 :D

本,

这将是使用 view.postScript() 的好案例,将其添加到您的 SSJS 代码的末尾,并将客户端 javascript 放在那里以重定向到您想要的任何位置。它只会在您的服务器端代码完成时 运行。

史蒂夫,我得到了一个非常简单的解决方案...

在对话框的 onHide 事件(不是 onClose)中,我放了这个客户端小片段:

path = location.pathname.split('.nsf')[0] + '.nsf/';
window.location.href = path + "/home.xsp";

这行得通。该按钮仍然需要部分刷新才能触发对话框,我已将其放在对话框本身 (dialog1) 上。

不过,我会尝试一下您的解决方案。 :D