是否有一种方法可以防止在添加或删除项目后,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>
答案 0 :(得分:2)
当然,只需将显示的第一行的偏移量(即当前页面的开头)绑定到模型的字段即可:
<p:dataTable
<!-- ... -->
first="#{handler.first}"
<!-- ... -->
>
</p:dataTable>
答案 1 :(得分:0)
Smutje的答案是正确的,但不足以使我的代码正常工作。(我使用的是PF 6.0.19 btw)。
使整个过程正常工作需要几个步骤
在您的first
中添加p:datatable
属性(Smutje的答案)
您还必须在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());
}