Primefaces数据表分页在更新后不起作用

时间:2016-01-04 09:53:10

标签: jsf-2 primefaces

我正在设计一个应用程序,其中某些输入源通过primefaces数据表输入。

版本规范: PrimeFaces - 4.0 JSF - 2.1.6

面临的问题: 更新数据表后分页中断。看起来在数据表中触发更新事件之前,分页工作完美。映射到此数据表的列表位于“视图范围”下。

请在下面找到我的数据表的XHTML代码,

<p:dataTable var="profile" value="#{manualNBean.manualNlist}"
                                    rows="10" paginator="true" paginatorPosition="bottom"
                                    rowIndexVar="rowIndex" lazy="true"
                                    paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                    rowsPerPageTemplate="10,50,100,200" id="statustab">

                                    <p:column headerText="S.No">
                                        <p:outputLabel value="#{rowIndex+1}" />
                                    </p:column>

                                    <p:column headerText="Profile ID">
                                        <p:outputLabel value="#{profile.profileID}" />
                                    </p:column>

                                    <p:column headerText="Law Firm Name">
                                        <p:outputLabel value="#{profile.lawFirmName}" />
                                    </p:column>

                                    <p:column headerText="First Name">
                                        <p:outputLabel value="#{profile.firstName}" />
                                    </p:column>

                                    <p:column headerText="Second Name">
                                        <p:outputLabel value="#{profile.secondName}" />
                                    </p:column>

                                    <p:column headerText="Full Name">
                                        <p:outputLabel value="#{profile.fullName}" />
                                    </p:column>

                                    <p:column headerText="Profile Link">
                                        <h:outputLink value="#{profile.profileLink}" target="_blank">#{profile.profileLink}</h:outputLink>
                                    </p:column>
                                    <p:column headerText="PPTS N" id="editNCol">
                                        <p:commandButton icon="ui-icon-pencil" process="@this"
                                            update="statustab" rendered="#{profile.editbuttonRender}"
                                            action="#{manualNBean.turnoffRender}">
                                            <f:setPropertyActionListener value="#{profile}"
                                                target="#{manualNBean.manualNDTO}" />
                                        </p:commandButton>
                                        <p:autoComplete id="manualN" minQueryLength="3"
                                            value="#{profile.manualN}"
                                            style="#{profile.autocompletebuttonRender}"
                                            completeMethod="#{manualNBean.autocompleteN}">
                                        </p:autoComplete>                                           
                                    </p:column>                                                                             
                                </p:dataTable>

此处,在命令按钮中执行更新操作。即使在执行更新操作之后,懒惰模型似乎仍然填充了数据库中的记录,但我想知道为什么分页会中断。

注意:通过向按钮添加ajax =“false”属性,页面重新加载,现在分页似乎正常工作。但是,这是不可行的,并期待用Ajax控制它。

只需添加另一个注释,此数据表仅在单击按钮后才从数据库中填充信息。

有人可以告诉我哪里出错吗?

1 个答案:

答案 0 :(得分:2)

我没有在update上使用p:commandButton属性,而是从action方法更新一行。现在分页似乎没有打破。那么有两种选择,我先使用它。

  • 使用OmniFaces AJAX实用程序。

    p:commandButton属性action中使用的解决方案如下,

    public void updateRow(UIData table) { int index = table.getRowIndex(); Ajax.updateRow(table, index); }

  • 以搜索表达式框架的形式使用普通的PrimeFaces解决方案 documentationshowcase

    服务器端方法如下所示:

    public void updateRow(UIData table) { int index = table.getRowIndex(); RequestContext.update(table.getClientId() + ":@row(" + index + ")"); }