Обновление (из p: ajax) данных с помощью Primefaces позволяет выбрать все строки таблицы - PullRequest
1 голос
/ 09 июня 2011

У меня та же проблема с простыми лицами 2.2.1 Я использую компонент Spinner с Ajax. Для каждого изменения счетчика я хочу обновить компонент DataTable (основные лица). И я не знаю, почему, каждый раз, когда я обновляю datatable, все строки выбираются, хотя selectionMode = "single" и выборка принимает параметр, который является POJO, а не списком. Это происходит в составной реализации.

<h:form id="frm">
        (...)
                    <p:dataTable id="openingHoursTbl" var="oh" value="#{cc.attrs.openingHours}" rows="7"
                       selection="#{cc.attrs.selectedHours}" selectionMode="single"
                       onRowSelectUpdate="hoursTable"
                       style="width: 300px">

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Day" />
                            </f:facet>
                            <h:outputText value="#{oh.displayedDays}" />
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Opening Hours" />
                            </f:facet>
                            <h:outputText id="ohHeader" value="#{oh.displayedHours}" />
                        </p:column>
                    </p:dataTable>
                (...)
                            <p:spinner value="#{hour.fromHour}" maxlength="2" size="2" stepFactor="1" min="0" max="23">  
                                <p:ajax process="@form" update="#{cc.clientId}:frm:openingHoursTbl" event="change" />
                            </p:spinner>
                (...)
    </h:form>

Вот ответ, полученный от сервера (обратите внимание, что для входного тега выбора выделены все строки):

<partial-response>
<changes>
    <update id="j_idt162:frm:openingHoursTbl">
        <div id="j_idt162:frm:openingHoursTbl" class="ui-datatable ui-widget"
            style="width: 300px">
            <table>
                (...)
            </table>
            <input type="hidden" id="j_idt162:frm:openingHoursTbl_selection"
                name="j_idt162:frm:openingHoursTbl_selection" value="0,1,2,3,4,5,6" />
        (...)

Спасибо за вашу помощь

1 Ответ

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

Старый вопрос, но у меня недавно была похожая проблема, поэтому она может помочь кому-то еще, кто имеет такую ​​же проблему. У меня возникла проблема при удалении строки, поэтому не совсем то же самое, но в любом случае.

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

...