selectManyCheckbox没有调用ajax监听器

时间:2017-04-26 14:50:30

标签: jsf primefaces

我有以下代码:

<p:selectManyCheckbox id="contactrole"
                      value="#{contactDetail.contactRoles}"
                      required="#{}"
                      layout="grid"
                      columns="1"
                      disabled="#{!contactDetail.editMode}">
    <f:selectItems value="#{contactDetail.contactRoleItems}"/>
    <p:ajax event="change"
            process="@this"
            update="linked_relationship_detail"
            listener="#{contactDetail.doSomething()}"/>
</p:selectManyCheckbox>

当我选中或取消选中复选框时,执行doSomething()方法,除非取消选中最后一个复选框。因此,如果没有选中复选框,则不会调用此方法。 当我将required属性设置为false时,将调用该方法。直到某一点我理解这个逻辑,但是我的视图中的某些组件是否被渲染(取决于是否选择了复选框)。那么我怎么知道没有选择复选框呢?

1 个答案:

答案 0 :(得分:0)

如果您需要根据p:selectManyCheckbox是否选择了任何组件来渲染组件,您只需执行以下操作:

... rendered="#{not empty contactDetail.contactRoles}" ...