JSF - p: dataTable - p: commandButton не работает даже внутри столбца p: - PullRequest
1 голос
/ 27 декабря 2010

У меня есть команда button внутри DataTable. Однако «действие» не вызывается, когда я нажимаю на него (тот же эффект с actionListener); Я добавил логи в начале действия сервера, и он никогда не показывается. Обратите внимание, что кнопка отлично работает вне списка данных.

Вот мой код:

<h:form id="compSearchForm">
    <p:dataTable var="competency" value="#{competencySearchBean.matchingCompetencies.toArray()}">
        <p:column>
            <f:facet name="header">
                <h:outputLabel value="Title" />
            </f:facet>
            <h:outputText value="#{competency.title}" />
        </p:column>

        <p:column>
            <p:commandButton value="Go" id="actionButton" action="#{myBean.doAction}" />
        </p:column>
    </p:dataTable>
</h:form>

Не могли бы вы знать, в чем проблема?

Ответы [ 4 ]

1 голос
/ 30 декабря 2010

Я добавил ваш код столбца кнопки в существующую шахту вместе с фиктивным методом в поддержку бина.Метод вызывается правильно, когда я нажимаю кнопку, он работает правильно.Вот код, который я добавил в свою таблицу данных:

<p:column>
    <p:commandButton value="Go" id="actionButton" action="#{tableBean.buttonAction()}" />
</p:column>

Вот метод buttonAction в моем компоненте поддержки:

public void buttonAction()
    {
        int a = 0;
        for(int i = 0; i < 100; i++)
            a = i;
    }

Я установил точку останова для этого метода, чтобы я знал еговызывается, когда я нажимаю кнопку.Я пошел дальше и использовал ваш код данных (с моим источником данных), и метод все еще вызывается, когда я нажимаю кнопку.Я не знаю, какую среду разработки вы используете, но если в ней есть режим отладки, установите точку останова для вашего метода doAction и нескольких других стратегических мест в вашем компоненте, а затем запустите ваш проект в режиме отладки, чтобы увидеть, что происходит..

0 голосов
/ 01 октября 2015

У меня была такая же проблема, и после попытки разными способами я решил ее, инициализировав свой List (список, который я использую в p:datatable) в методе init метода Bean.

С помощью этой формы список переходит на страницу с некоторыми значениями.

Даже когда я поставил List<Paciente> myList = new ArrayList<Paciente>();, он не работал.Я должен положить некоторые значения в списке.Это был единственный способ решить проблему.

0 голосов
/ 07 июня 2013

см. Этот пример - http://www.primefaces.org/showcase/ui/datatableRowSelectionByColumn.jsf

Я думаю, вы должны добавить к идентификатору формы идентификатор

посмотреть, как он обновляется ": form: display" вместо только "display"

работал на меня

0 голосов
/ 27 декабря 2010

Я думаю, вы должны изменить на:

<h:form id="compSearchForm">
<p:dataTable var="competency" value="#{competencySearchBean.matchingCompetencies.toArray()}">
    <p:column>
        <f:facet name="header">
            <h:outputLabel value="Title" />
        </f:facet>
        <h:outputText value="#{competency.title}" />
    </p:column>
</p:dataTable>
<p:commandButton value="Go" id="actionButton" action="#{myBean.doAction}" />
</h:form>

Не думаю, что у вас может быть кнопка внутри таблицы данных. Попробуйте это.

...