p:treeTable - p:没有调用ajax监听器方法

时间:2014-10-15 18:26:23

标签: ajax jsf primefaces myfaces treetable

使用p:treetable selectionMode =“checkbox”,我试图在标题上有一个复选框,以便选择它将选择treetable所有行中的所有复选框。我调用p:ajax监听器方法processSelectAllRows的所有尝试都失败了。我能够使用p:datatable完成此操作,并使用p:treetable需要相同的功能。任何帮助将不胜感激。

以下是代码:

        <h:form id="searchFormId">
        <p:panel id="searchPanelId">

            <p:outputPanel id="ResultsPanelId">
                <p:treeTable id="resultsTreeTableId" value="#{aBean.resultsRoot}"
                    scrollRows="20" scrollable="true" var="aNode"
                    selectionMode="checkbox" selection="#{aBean.selectedResultNodes}">
                    <p:ajax event="select" listener="#{aBean.onNodeSelect}"
                        update="resultsTreeTableId" />
                    <p:ajax event="unselect" listener="#{aBean.onNodeUnselect}"
                        update="resultsTreeTableId" />
                    <p:column>
                        <f:facet name="header">
                            <p:selectBooleanCheckbox id="allChkb" name="allChkb"
                                value="#{aBean.selectAll}">
                                <p:ajax listener="#{aBean.processSelectAllRows}"
                                    process="@this" update="resultsTreeTableId" />
                            </p:selectBooleanCheckbox>
                        </f:facet>
                        <h:outputText value="#{aNode.name}" />
                    </p:column>
                </p:treeTable>
            </p:outputPanel>

        </p:panel>
    </h:form>

这是侦听器方法

public void processSelectAllRows(AjaxBehaviorEvent event) {
System.out.println("Select all rows.");}

环境: 1)Primefaces 3.5(无法很快升级) 2)myfaces-bundle 2.1.15 3)Tomcat服务器 4)Java 1.7

1 个答案:

答案 0 :(得分:0)

您可以使用NodeSelectEvent而不是AjaxBehaviorEvent。

NodeSelectEvent是Primefaces 3.5 API中存在的AjaxBehaviorEvent的子类。如果您使用的是非最终素数版本,最好使用Primefaces Objects而不是Faces Objects。

希望我能帮到你! :)