我的页面中有两个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? p>
答案 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}" />