p:treeTable - метод слушателя p:ajax не вызывается

Используя p:treetable selectionMode="checkbox", я пытаюсь установить флажок в заголовке, чтобы его выбор устанавливал все флажки во всех строках таблицы дерева. Все мои попытки вызвать метод прослушивателя 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


person Rana    schedule 15.10.2014    source источник


Ответы (1)


Вместо AjaxBehaviorEvent вы можете использовать NodeSelectEvent.

NodeSelectEvent — это подкласс AjaxBehaviorEvent, присутствующий в API Primefaces 3.5. Если вы используете не финальную версию Primefaces, лучше используйте Primefaces Objects вместо Faces Objects.

Надеюсь, я вам помог! :)

person Anderson Marques    schedule 16.10.2014
comment
Я попытался использовать NodeSelectEvent, как вы предложили, но это не сработало, поскольку p: selectBooleanCheckbox запускал событие «изменение». Еще я заметил, что ‹p:selectBooleanCheckbox value=#{aBean.selectAll}› не обновляет свойство selectAll, когда я нажимаю на него, поскольку его метод установки не вызывается. @Андерсон Спасибо за ваш вклад. - person Rana; 16.10.2014