我目前正在开发一个项目,将现有的传统多米诺骨牌Web应用程序重新设计为XPages。此应用程序包含一个Web表单,其中包含大量帮助程序对话框。此外,还可以通过对话框完成通知,验证和确认。
我知道我可以为每个对话框创建一个自定义控件,并将其添加到Xpage并调用show。我甚至设法使用动态内容控件动态加载它,每个对话框都有一个facet。由于对话框cc在onClientLoad中包含show()。通过切换动态内容控件的内容很容易打开对话框。
尽管如此,将所有这些自定义控件添加到我的XPage中感觉效率低下并且真的使设计选项卡变得混乱。你有什么看法?
我更喜欢动态设置对话框的内容(就像在传统的多米诺骨牌中一样,您可以为每个对话框定义一个表单)。那可能吗? 如果不是可以动态加载自定义控件(比如使用计算子表单)?
同样对于确认框我需要OK按钮为每次确认执行不同的代码。实现这一目标的最佳方式是什么?将自定义参数“functionOnOk”添加到“dlgConfirm”自定义控件并在提交按钮中进行评估?
PS:我仍在使用带有dojoType = dijit.DialogBox的面板,但会将这些面板更改为extlib对话框。对于确认和消息框,我现在使用客户端dijit.Dialogs代码标记,但我也想在XPage中的标记。
答案 0 :(得分:0)
我知道使用dijit.Dialog的面板存在问题,因为Dojo会在DOM中移动对话框,这会阻止对话框中的任何SSJS运行。我不知道这是否也是dijit.DialogBox的问题,但我怀疑它可能是。 Jeremy Hodge做了一些代码来解决这个问题。
但是,我强烈建议使用Extension Library控件。客户端dijit.Dialogs可能更难编码,不允许任何SSJS交互。我不知道扩展库控件中没有任何Dojo属性,扩展库控件还允许您在CSJS或SSJS中打开或关闭对话框。它还允许您指定要在关闭时刷新的区域。
就属性而言, preload 纯粹是为了加速展示。您使用的是 refreshOnShow 属性吗?这可确保每次显示对话框时刷新URL或内容。对话框的扩展库章节有一个涵盖所有属性的表。您可以将URL设置为指向另一个XPage或其他网页。这可能允许您使用动态内容控件传递参数以切换应显示的内容。
就OK按钮后面的代码而言,如果使用“扩展库”对话框,则可以获得对话框外的所有功能。