防止渲染后primitives数据表跳到首页上

时间:2019-05-13 10:28:51

标签: jsf primefaces datatable

是否有一种方法可以防止在添加或删除项目后,primefaces数据表跳回到首页上?

示例: 我有一个带有懒惰数据模型和分页的数据表。 目前,我有两页。现在,我添加一个项目,并在渲染后将分页器跳转到第一页。

这有可能不会发生吗?

    <p:dataTable id="persAnwTbl" 
    var="_anweisung"
    value="#{handler.dataModel}"
    style="width:100%"
    widgetVar="persAnwTblVar"
    emptyMessage="#{messages.noData}"
    lazy="true"
    paginatorAlwaysVisible="true"
    paginator="true"
    paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {RowsPerPageDropdown} {NextPageLink} {LastPageLink}"
    currentPageReportTemplate="{totalRecords} #{labels.datensaetze} - #{labels.seite} {currentPage} / {totalPages}"
    rows="#{handler.rows}"
    rowsPerPageTemplate="5,10,15,20,30,50,100,200,500,1000"
    binding="#{handler.dataTable}"
    sortBy="#{_anweisung.module.displayName}"
    filteredValue="#{handler.filteredValues}">
...
...
...
/>

编辑: 2019-05-13 --- 03:05 pm

<p:dataTable id="persAnwTbl" var="_anweisung"
                             value="#{handler.dataModel}"
                             style="width:100%"
                             widgetVar="persAnwTblVar"
                             emptyMessage="#{messages.noData}"
                             lazy="true"
                             paginatorAlwaysVisible="true"
                             paginator="true"
                             paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {RowsPerPageDropdown} {NextPageLink} {LastPageLink}"
                             currentPageReportTemplate="{totalRecords} #{labels.datensaetze} - #{labels.seite} {currentPage} / {totalPages}"
                             rows="#{handler.rows}"
                             rowsPerPageTemplate="5,10,15,20,30,50,100,200,500,1000"
                             binding="#{handler.dataTable}"
                             sortBy="#{_anweisung.module.displayName}"
                             filteredValue="#{handler.filteredValues}"
                             first="#{handler.first}">

...
...
...
</p:dataTable>

2 个答案:

答案 0 :(得分:2)

当然,只需将显示的第一行的偏移量(即当前页面的开头)绑定到模型的字段即可:

<p:dataTable
 <!-- ... -->
 first="#{handler.first}"
 <!-- ... -->
>
</p:dataTable>

答案 1 :(得分:0)

Smutje的答案是正确的,但不足以使我的代码正常工作。(我使用的是PF 6.0.19 btw)。

使整个过程正常工作需要几个步骤

  1. 在您的first中添加p:datatable属性(Smutje的答案)

  2. 您还必须在bean侦听器方法中调用DataTable.setFirst()

    例如

    public void addItem(){
        //Your add item code
        //Assume your `first` getter method can be called by handler.getFirst()
        ((DataTable) FacesContext.getCurrentInstance.getViewRoot().findComponent("YOUR_DATATABLE_ID")).setFirst(handler.getFirst());
    }