1

我目前正在进行一个项目,将现有的传统 domino Web 应用程序重新设计为 XPages。该应用程序包含一个带有很多帮助对话框的 Web 表单。通知、验证和确认也是通过对话框完成的。

我知道我可以为每个对话框创建一个自定义控件并将其添加到 Xpage 并调用 show。我什至设法使用动态内容控件动态加载它,每个对话框都有一个方面。由于对话框 cc 在 onClientLoad 中包含一个 show()。通过切换动态内容控件的内容,很容易打开一个对话框。

尽管如此,将所有这些自定义控件添加到我的 XPage 中感觉效率低下,并且确实使设计选项卡变得混乱。你怎么看?

我更喜欢动态设置对话框的内容(就像在传统的多米诺骨牌中,您将为每个对话框定义一个表单)。那可能吗?如果不是,是否可以动态加载自定义控件(例如使用计算子表单)?

同样对于确认框,我需要 OK 按钮来为每个确认执行不同的代码。实现它的最佳方法是什么?将自定义参数“functionOnOk”添加到“dlgConfirm”自定义控件并在提交按钮中对其进行评估?


PS:我仍在使用带有 dojoType=dijit.DialogBox 的面板,但会将它们更改为 extlib 对话框。对于确认和消息框,我现在在代码中使用带有标记的客户端 dijit.Dialogs,但我也想要 XPages 中的标记。

4

1 回答 1

0

我知道带有 dijit.Dialog 的面板存在问题,因为 Dojo 在 DOM 中移动对话框,这会阻止对话框中的任何 SSJS 运行。我不知道这是否也是 dijit.DialogBox 的问题,但我怀疑它可能是。Jeremy Hodge 做了一些代码来解决这个问题。

但是,我强烈建议使用扩展库控件。客户端 dijit.Dialogs 可能更难以编码,并且不允许任何 SSJS 交互。我不知道扩展库控件中没有任何 Dojo 属性,扩展库控件还允许您在 CSJS 或 SSJS 中打开或关闭对话框。它还允许您指定要在关闭时刷新的区域。

就属性而言,预加载纯粹是为了加快显示速度。你在使用refreshOnShow属性吗?这可确保每次显示对话框时都会刷新 URL 或内容。关于对话框的扩展库章节有一个表格,涵盖了所有属性。您可以将 URL 设置为指向另一个 XPage 或另一个网页。这可能允许您使用动态内容控件传递参数来切换应该出现的内容。

就 OK 按钮背后的代码而言,如果您使用 Extension Library 对话框,您将拥有对话框之外的所有功能。

于 2012-08-03T12:38:09.407 回答