2012-10-08 36 views
0

我有两个Primefaces p:dialogs在我的网页,我有两个按钮来显示他们(一个是删除按钮,另外一个是编辑按钮)。JSF - 有条件地显示两个中的一个对话框

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

现在这个bean是ViewScoped,所以如果只有一个项目被选中,并且有一个没有按下Ajax提交的commandButton,那么这两个对话框都会显示出来,这显然不是我想要的。

有什么需要时,只显示相应的对话框最简单的方法?

我不想设定一个额外的属性豆,因此我们认为这是一个平凡的解决方案。有另一种方法吗?也许将动作的名称设置为视图作用域参数?或者使用呈现的属性并管理从javascript回调中显示/隐藏?

回答

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}" /> 
+0

我最终实现与此非常相似。 –

相关问题