我想知道是否有办法在最终用户取消选择复选框菜单中的所有项目时向最终用户隐藏命令按钮。
感谢您的所有意见和建议。
只需让命令按钮的 rendered
属性检查 select 复选框菜单的 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>
不需要不必要的代码,例如专门用于值更改和rendered
属性的附加 Bean 属性或侦听器方法或丑陋的黑客,例如另一个答案中提到的valueChangeListener
,其回答者显然考虑了 JSF 1.x。
对于命令按钮,将渲染属性设置为 ex
在托管 Bean 中创建一个布尔变量 allCheckBoxNotSelected with getter 和 setter
对于 valueChangeListener 属性中的复选框,请调用受管 Bean 方法,该方法将检查所有复选框的当前值。如果未选择,则将 false 放入所有复选框未选择变量,然后通过其 id 更新命令按钮。