JSF - 有条件地显示两个对话框之一

时间:2012-10-08 12:45:49

标签: java jsf primefaces

我的页面中有两个Primefaces p:dialogs,我有两个按钮来显示它们(一个是删除按钮,另一个是编辑按钮)。

我按如下方式设置对话框的可见属性:visible="#{fn:length(bean.selectedItems) gt 0}用于删除按钮和visible="#{fn:length(bean.selectedItems) eq 1},因此我可以删除多个元素,但只能同时编辑一个元素。

现在bean是ViewScoped,所以如果只选择了一个项目,并且没有按下ajax提交的commandButton,则会显示两个对话框,这显然不是我想要的。

仅在需要时显示相应对话框的最简单方法是什么?

我不想为此设置额外的bean属性,所以让我们考虑一个简单的解决方案。还有另外一种方法吗?也许将操作的名称设置为视图范围参数?或者使用渲染的属性并管理javascript回调中的show / hide?

1 个答案:

答案 0 :(得分:1)

我认为正确的方法是

<p:commandButton value="DELETE" 
                 onclick="deleteDialog.show()" 
                 disabled="#{fn:length(bean.selectedItems) eq 0}" />

<p:commandButton value="EDIT" 
                 onclick="editDialog.show()" 
                 disabled="#{fn:length(bean.selectedItems) ne 1}" />