0

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

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

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

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

我不想为此设置额外的 bean 属性,所以让我们认为这是一个简单的解决方案。还有其他方法吗?也许将操作的名称设置为视图范围的参数?或者使用呈现的属性并管理来自 javascript 回调的显示/隐藏?

4

1 回答 1

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}" />
于 2012-10-08T13:17:22.073 回答