p: commandButton внутри p: pdataTable / p: dataGrid / ui: repeat не вызывает метод - PullRequest
1 голос
/ 16 февраля 2012

Я использую Primefaces 3.1, JSF 2.1.6 на Glassfish 3.1.1.

У меня есть множество командных кнопок, которые работают нормально, но эта не работает, и я не могу понять, почему.Предупреждение javascript срабатывает, но метод контроллера никогда не вызывается.

Обратите внимание, что первая командная кнопка срабатывает отлично (кнопка «Фильтр»), но кнопка редактирования внутри таблицы данных не срабатывает.Вместо dataGrid я попробовал ui: repeat, но это дает тот же эффект / проблему.У меня есть много других таблиц данных с командными кнопками, но они все работают нормально ... странно.

<h:form id="memberships" prependId="false">
        <h:panelGrid columns="3">
            <h:outputLabel value="Filter on EPS" />
            <p:selectOneMenu value="#{epsMembershipViewController.selectedEps}"
                style="width:200px" effect="fold" editable="false" id="selectEps">
                <f:selectItem itemLabel="Select One" itemValue="" />
                <f:selectItems value="#{epsMembershipViewController.allEps}" />
            </p:selectOneMenu>
            <p:commandButton value="Filter"
                action="#{epsMembershipViewController.repopulateView}" ajax="false" />
        </h:panelGrid>
        <br />

        <p:dataGrid var="eps" value="#{epsMembershipViewController.ldapEpss}"
            columns="1">

            <h:outputLabel value="#{eps}"
                style="font-weight: bold;font-size: 14px;" />

            <p:dataTable var="ldapUser" id="id_#{eps}"
                value="#{epsMembershipViewController.getUsersByEpsFromLdap(eps)}"
                paginator="false" selectionMode="single" rowKey="#{ldapUser.name}"
                rowStyleClass="#{ldapUser.expired == 'Yes' ? 'expired' : null}">

                ....... columns



                <p:column style="width:20px">
                    <f:facet name="header">
                        <h:outputText value="" />
                    </f:facet>
                    <p:commandButton icon="ui-icon-extlink"
                        onclick="alert('this event does not work')" ajax="false"
                        action="#{epsMembershipViewController.edit()}" />
                </p:column>

            </p:dataTable>

            <br />
            <br />

        </p:dataGrid>
    </h:form>

Код компонента

public String edit(ActionEvent e) {

    log.debug("EDIT USER 22222 ");


    return "eps-search";
}

Спасибо за вашу помощь, Коэн

1 Ответ

1 голос
/ 17 февраля 2012

Ааааа, как всегда, после полдня настройки я отправил вопрос, а через 10 минут я вижу проблему.

Проблема в том, что таблица данных не заключена в столбец p :. Он отображается нормально, но это приводит к тому, что форма просто выполняет отправку без вызова метода вспомогательного компонента.

<p:dataGrid var="eps" value="#{epsMembershipViewController.ldapEpss}"
            columns="1">

            <p:column> THIS WAS NOT PRESENT !!!!

                <f:facet name="header">
                    <h:outputText value="#{eps}" />
                </f:facet>

                <p:dataTable var="ldapUser" id="id_#{eps}"
                    value="#{epsMembershipViewController.getUsersByEpsFromLdap(eps)}"
                    paginator="false" selectionMode="single" rowKey="#{ldapUser.name}"
                    rowStyleClass="#{ldapUser.expired == 'Yes' ? 'expired' : null}">

                                           ..... COLUMNS .........

                    <p:column style="width:20px">
                        <f:facet name="header">
                            <h:outputText value="" />
                        </f:facet>
                        <p:commandButton icon="ui-icon-extlink"
                            onclick="alert('this event does not work')" ajax="false"
                            action="#{epsMembershipViewController.edit()}" />
                    </p:column>

                </p:dataTable>

            </p:column>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...