我有一个联系表单,我使用在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
答案 0 :(得分:1)
钟,
这是一个使用view.postScript()的好例子。将它添加到SSJS代码的末尾,并将客户端javascript放在那里以重定向到你想要的任何地方。它只会在您的服务器端代码完成时运行。
答案 1 :(得分:0)
在对话框的onHide事件中(不是onClose),我已经把这个小客户端片段:
path = location.pathname.split('.nsf')[0] + '.nsf/';
window.location.href = path + "/home.xsp";
这很有效。按钮仍需要部分刷新才能触发对话框,我已将其放在对话框本身(dialog1)上。
但是,我会试试你的解决方案。 :d