h:selectBoolean复选框在第一次点击时不会在 rich:datatable 中触发 a4j:ajax 侦听器



第一次检查h:selectBooleanCheckBox时,侦听器不会被触发。 再次检查它,确实会触发侦听器。 我还尝试为h:selectBooleanCheckBox做一个valueChangeListener="selectRoleCheckboxChangeListener"属性,结果相同。 它将在第二次和后续点击时工作。 我想在第一次点击时就有这个火。 想法? 谢谢

<rich:dataTable id="roleTable" 
    value="#{roleBean.displayedRoles}" 
    var="roleItem"  
>
    <rich:column 
        id="selectRoleCheckboxColumn" 
    >
        <f:facet name="header">Select Role</f:facet>
        <h:selectBooleanCheckbox
            id="selectRoleCheckbox" 
            value="#{roleItem.selectRole}" 
            binding="#{roleBean.selectRoleCheckbox}"
        >
            <a4j:ajax 
                event="click" 
                listener="#{authorizationBean.selectRoleCheckboxListener}"
            /> 
        </h:selectBooleanCheckbox>
    </rich:column>
</rich:dataTable>

我遇到了同样的问题。我找到了上述问题的解决方案。

问题是您的组件没有 id,或者设置的对象或值没有被反映。另一个问题是内在形式。

解决方案将是...为所有组件设置 id,如果值未反映在 ajax 请求中,则呈现为其设置值的组件。窗体内不要包含窗体。

希望它应该有效...

这是一个非常古老的帖子。仍然可能对某人有用。

试试这个

<h:selectBooleanCheckbox id="selectRoleCheckbox" value="#{roleItem.selectRole}"         
  <a4j:support event="onchange" action="#{authorizationBean.selectRoleCheckboxListener}"/>
</h:selectBooleanCheckbox>

希望它有效..

最新更新