从iframe内部关闭XPages ExtLib对话框

时间:2016-10-25 11:57:10

标签: javascript iframe dialog xpages xpages-extlib

我在XPage中打开了db1.nsf / doc1。在XPage上是同一服务器上相关文档(db2.nsf / doc2)的视图。我正在使用重复控件,每个条目周围都有一个链接,以在ExtLib对话框中打开doc2。

注意:因为doc2上有fileUpload和fileDownload控件,所以我必须在对话框中的iframe中打开doc2(v8.5.3)。由于Toohey的文章File Upload XPage Forms via OpenNTF.org Extension Library Dialogs,我已将所有文件上传/下载工作完成。

问题是我无法使用对话框中iframe中的按钮关闭对话框。我的场景和Toohey之间的区别在于我在2个不同的数据库中使用2个不同的文档。父开启者是XPage,db1中包含数据源doc1,而db2中的对话子为doc2。我似乎无法从iframe中的子文档中获取父文档的句柄,因此我可以关闭对话框。它看起来像这样:

/\b(#{Regexp.union(pattern_list).source})\b/

▶ "lonewolf is lonely".scan /\b(#{Regexp.union(%w|lonely wolf jungle|).source})\b/
#⇒ [
#    [0] [
#        [0] "lonely"
#    ]
#  ]

*注意:showDialog.xsp是db1中的XPage,其数据源为db2.nsf / doc2。 (我正在使用带有tagName =“iframe”的xp:panel。)

我希望OK按钮保存文档(它执行)并关闭对话框(它没有)。我已经尝试了几种不同的“父......”方法来处理并关闭它 - 根本没有成功。

如何从iframe中获取对话框元素的句柄,以便我可以关闭它?

*添加了服务器版本。

1 个答案:

答案 0 :(得分:0)

XPages扩展库对话框的工作方式是它运行SSJS,然后调用view.postScript()将CSJS传递回浏览器以关闭对话框。你需要重现它。 (我不确定您使用的服务器版本,但view.postScript()仅在8.5.3中添加,可能是对话框用例。)

我不熟悉您正在使用的功能,但9.0.1提供了在部分刷新中上传附件的功能,这可以解决Ext Lib对话框的变通方法。

可以计算数据源的databaseName属性(格式为serverName !! filePath),因此位于单独数据库中的数据不应成为问题。事实上,我构建的大多数应用程序现在将XPage分成一个NSF,将数据/表单/视图/代理分离到另一个NSF。无论如何,对于Bluemix上的XPage,以及其他Web应用程序开发的标准,都需要该应用程序架构。