我想知道当他取消选择 selectCheckboxMenu 中的所有项目时,是否有办法向最终用户隐藏命令按钮。
感谢您的每一个意见和建议。
对于命令按钮设置渲染属性为 ex
在托管 bean 中使用 getter 和 setter 创建一个布尔变量 allCheckBoxNotSelected
对于 valueChangeListener 属性中的复选框,调用一个托管 bean 方法,该方法将检查所有复选框的当前值。如果未选中,则将 false 设置为 allCheckBoxNotSelected 变量,然后通过其 id 更新命令按钮。
只需让rendered
命令按钮的属性检查选择复选框菜单属性后面的相同属性value
是否不代表空集合。<p:ajax>
您可以通过更改选择复选框菜单来更新按钮的持久父组件来重新执行此检查。
所以,简而言之:
<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 属性或专门用于值更改和rendered
属性的侦听器方法或丑陋的 hack,例如valueChangeListener
其他答案中提到的,其回答者显然考虑了 JSF 1.x。