【问题标题】:h:selectBooleanCheckbox not firing a4j:ajax listener inside rich:datatable on first clickh:selectBooleanCheckbox 不触发 a4j:ajax 侦听器 Rich:datatable 第一次点击
【发布时间】:2012-06-27 02:03:00
【问题描述】:

第一次检查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>

【问题讨论】:

  • 尝试将事件设为onchange 而不是click
  • 感谢您的回复。我尝试了 event="change" 但行为没有变化。我正在尝试消除绑定,看看是否有帮助。

标签: jsf-2 richfaces


【解决方案1】:

试试这个方法

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

希望它有效..

【讨论】:

  • 这是 RichFaces 4.2,所以我使用的是 a4j:ajax 。这是从 RichFaces 3.3.1 的迁移。以前使用 a4j:support。这与组件中的“valueChangeListener”和 a4j:support 中的“event=onclick”一起使用。
【解决方案2】:

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

问题将是您的组件没有 id 或对象或设置的值没有得到反映。另一个问题是内部形式。

解决方案是... 为所有组件设置 id,如果值没有反映在 ajax 请求上,则呈现设置了值的组件。表格内没有表格。

希望它应该工作......

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多