在JSF应用程序中使用对话框进行编辑 - 哪个组件?

时间:2013-05-01 00:25:26

标签: jsf primefaces

我正在考虑将编辑屏幕的工作流程更改为对话框。

为了得到一般的想法,我们有一个拥有众多孩子的父实体。这些都在数据表组件中,每个组件旁边都有“编辑”按钮。单击一个会导致托管bean将该单个记录加载到“currentlyEditing”变量中,并返回null以使其保持在同一视图上,并且ajax更新先前隐藏的表单区域以显示预先填充以进行编辑的所选记录。在新表单的底部是“保存”和“取消”按钮,它们可以满足您的期望。子列表下方的单个按钮(“添加”)会将空白对象设置为“currentEditing”变量,并且视图现在显示一个干净的表单。到目前为止,这一切都很标准,对吧?

我的商业用户要求我做的是改变编辑工作流程。他们希望按钮单击以启动包含编辑表单和保存/取消按钮的对话框,而不是单击按钮,以及出现在子项列表下方的先前隐藏区域。所有验证错误/消息都应保留在对话框中。如果成功保存只是自动关闭对话框,或者如果他们应该看到成功消息,然后有一个关闭对话框的按钮,则目前尚未确定。有人建议同时使用“保存”和“保存并关闭”按钮。

我们正在使用Primefaces 3.5(并考虑​​转向4.0-SNAPSHOT,因为我们的上线相当遥远,我们不怕在此期间从源代码构建)。我看到有一个当前的<p:dialog组件,但我也看到即将出现的“对话框架”,但我不确定它们的含义是什么。是一个包含验证消息和托管bean往返的完整编辑表单,甚至可能在该对话框中启动了其他对话框,对<p:dialog的含义只是“太多”了吗?对话框架是否意味着解决此问题/用于此类用例?

1 个答案:

答案 0 :(得分:1)

在我看来,你可以用p:对话框来做到这一点。我以前做过,虽然我做过,但Dialog Framework并不存在。由于您将使用单个bean,因此将对话框中所做的更改应用于表格会更容易。此外,由于它位于同一页面,因此对话框将显示得更快(更好的用户体验)。 当您重新打开对话框以防止显示上次编辑时出现错误时,您需要一些javascript来清除验证消息。但是使用jQuery,这不会有问题。