【问题标题】:XPages templating dialog boxesXPages 模板对话框
【发布时间】:2012-07-26 12:38:11
【问题描述】:

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

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

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

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

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


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

【问题讨论】:

  • 使用 extlib Dialog 控件而不是 dijit.dialog 会破坏上述动态内容控件的使用。但是预加载选项允许内容仅在放映时加载,这样就不需要了。

标签: xpages xpages-extlib


【解决方案1】:

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

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

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

就确定按钮背后的代码而言,如果您使用扩展库对话框,您将拥有对话框之外的所有功能。

【讨论】:

  • 感谢您的回复。我现在在我的大部分对话框中使用 ExtLib 对话框。查看了允许我在对话框中加载另一个 XPage 的 href 属性,但这似乎不起作用。将坚持为每个对话框创建自定义控件并整理我的 XPage。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 2023-04-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多