Jsf 在primefaces中选择CheckboxMenu取消选中所有项目时,是否有方法触发事件/隐藏命令按钮

Jsf 在primefaces中选择CheckboxMenu取消选中所有项目时,是否有方法触发事件/隐藏命令按钮,jsf,primefaces,Jsf,Primefaces,我想知道,当最终用户取消选择SelectCheckBox菜单中的所有项目时,是否有办法向其隐藏commandbutton 感谢您的评论和建议。对于命令按钮,请为ex设置渲染属性 在托管bean中,使用getter和setter创建一个布尔变量allCheckBoxNotSelected 对于valueChangeListener属性中的复选框,请调用托管bean方法,该方法将检查所有复选框的当前值。如果未选中,则将allCheckBoxNotSelected变量设置为false,然后通过其id

我想知道,当最终用户取消选择SelectCheckBox菜单中的所有项目时,是否有办法向其隐藏commandbutton


感谢您的评论和建议。

对于命令按钮,请为ex设置渲染属性

在托管bean中,使用getter和setter创建一个布尔变量allCheckBoxNotSelected

对于valueChangeListener属性中的复选框,请调用托管bean方法,该方法将检查所有复选框的当前值。如果未选中,则将allCheckBoxNotSelected变量设置为false,然后通过其id更新命令按钮。

只需让命令按钮的呈现属性检查“选择复选框”菜单的“值”属性后面的相同属性是否不代表空集合。通过使用“选择复选框”菜单的“更改”更新按钮的持久父组件,可以重新执行此检查

因此,简而言之:

<p:selectCheckboxMenu value="#{bean.selectedItems}">
    <f:selectItems value="#{bean.availableItems}" />
    <p:ajax update="button" />
</p:selectCheckboxMenu>

<h:panelGroup id="button">
    <p:commandButton value="Submit" rendered="#{not empty bean.selectedItems}" />
</h:panelGroup>

不需要不必要的代码,例如额外的bean属性或侦听器方法,专门用于值更改和呈现属性,或者像另一个答案中提到的valueChangeListener这样丑陋的黑客,其回答者考虑的是JSF 1.x。

恐怕valueChangeListener在没有更多选择时不会再触发复选框上的项目。