SSJS上的确认对话框

时间:2015-12-01 07:51:13

标签: xpages

我需要在后端执行一些ServerSide(SSJS)控件,然后在用户面前出现一个确认对话框。我无法编写正确的代码。

var cVal = getComponent("fieldName").getValue();
if (cVal != "undefined" || cVal != null || cVal != "") {
    var db:NotesDatabase = session.getCurrentDatabase();
    var checkView:NotesView = db.getView("viewname)");
    var checkDoc = checkView.getDocumentByKey(cVal);
    if (checkDoc != null) {
        var scriptCode = "confirm ("
        Are you sure you want to navigate away from this page ? " + "\
        n " + "\
        n " + "
        Press OK to
        continue, or Cancel to stay on the current page.
        "))";
        view.postScript(scriptCode);
    }

/ * 在这部分功能应根据用户的选择工作。 如果用户单击“是”,则应打开找到后端的文档。 如果用户单击NO则没有任何反应。 * /

1 个答案:

答案 0 :(得分:2)

在从客户端移动到Web之后对应用程序进行编码时,这是一个常见的错误。在客户端,LotusScript可以提示用户交互,暂停,等待响应,然后对该响应采取行动。

除非您通过客户端JavaScript执行所有操作,否则这不适用于网络。有三种选择。

  1. 不使用SSJS,而是使用JSON RPC调用将所有代码放入CSJS中以触发服务器端功能。如果你想以这种方式继续构建应用程序,你需要非常熟悉它,并且编写CSJS比编写字符串要容易得多。
  2. 在运行SSJS之前提示,然后在文档不存在时给出错误消息。如果行动旨在向前路线,这将是我的首选方案。
  3. 在其余代码运行后,通过SSJS启动XPages对话框。在该对话框中提示用户并采取相应的行动。如果操作是其他功能的意外副产品,这将是我的首选选项。
  4. 使用XPages对话框还可以让您与应用程序一致地设置对话框的样式,而不是被迫接受浏览器样式,在某些浏览器中,浏览器样式可能会受到限制。