Добавьте p: commandButton в заголовок Primefaces с атрибутом f:

У меня есть страница с p: datatable и динамическими столбцами. Я пытаюсь добавить командную кнопку в заголовки с атрибутом f: в качестве значения для нажатия командной кнопки. проблема в том, что я вообще не попадаю на сервер при нажатии кнопки заголовка. вот фрагмент кода

<p:dataTable >
    <p:columns value="#{controller.columnsTitles}" var="column" columnIndexVar="colIndex">
        <f:facet name="header">
            <p:panel >
                <table>
                    <tr>
                        <th>
                            <p:panel>
                                #{column.label}
                            </p:panel>
                        </th>
                    </tr>
                    <tr>
                    <th>
                        <h:panelGroup >
                            <p:commandButton value="Add" actionListener="#{controller.doStaff}">
                                <f:setPropertyActionListener value="#{column.value}" target=#{controller.selectedToEdit}" />
                            </p:commandButton>
                        </h:panelGroup>
                    </th>
                </tr>
            </table>
        </p:panel>

    </f:facet>
<p:column>
    ......
</p:column>
</p:columns>
</p:dataTable>

[Изменить] Я нашел решение этой проблемы. К командной кнопке я добавил событие onClick, которое передает параметр selectedToEdit функции javascript, которая, в свою очередь, вызывает p:remoteCommand, которая передает параметр на сервер. Я также изменил actionListener commandButton на action, и теперь он работает.

Теперь код выглядит следующим образом:

<script>
function jsFunc(param)
{
    command([{name:'selectedToEdit',value:selectedToEdit}]);
}
</script>
.....
<p:remoteCommand name="command" actionListener="#{controller.selectedToEdit}" />
<p:commandButton value="Add" action="#{controller.doStaff}" onclick="jsFunc('#{column.value}')" />

person user1927865    schedule 03.07.2013    source источник
comment
пожалуйста, попробуйте добавить ajax=false или используйте чистую кнопку jsf для тестирования, где-то в вашем коде есть ошибка   -  person Subodh Joshi    schedule 03.07.2013
comment
Primefaces использует ajax="true" по умолчанию. если вы хотите нормальное поведение кнопки, вам нужно явно установить значение false   -  person Przemek    schedule 03.07.2013
comment
Спасибо за ваш ответ. ни один из ваших советов не работает для меня.   -  person user1927865    schedule 03.07.2013
comment
что пишет лог при нажатии на кнопку? доступен ли бин? как выглядит ваш метод в бине?   -  person Przemek    schedule 03.07.2013
comment
@Przemek Я нашел решение. пожалуйста, смотрите мое редактирование.   -  person user1927865    schedule 03.07.2013
comment
Вы можете передавать значения bean-компоненту нативным способом jsf. Взгляните на stackoverflow.com/questions/9701590/ или этот stackoverflow.com/questions/4888942/   -  person Przemek    schedule 03.07.2013