在PF 4.0中,如何在更新数据表并应用oncomplete="dt1Widget.filter()"
之后使分页器转到正确的页面?
对话框中的按钮应该保存某个元素,然后更新数据表,再次应用过滤器(由我自己的DataTableRenderer保存),并保持打开对话框时我所在的页面。这意味着我按照某些标准进行过滤,转到第7页,编辑元素,按保存,然后仍然想要在第7页上。
我的数据表
<p:dataTable id="dt1" var="tVar" value="#{regelBean.queriedElements}" scrollable="false"
paginator="true" paginatorAlwaysVisible="true" rows="10"
rowsPerPageTemplate="10,25,100" paginatorPosition="bottom" widgetVar="dt1Widget"
filteredValue="#{regelBean.filteredElements}" first="#{regelBean.paginatorFirst}">
...
<p:ajax event="page" listener="#{regelBean.onPageChange}"/>
对话框内的按钮
<p:commandButton value="Speichern #{regelBean.paginatorFirst}"
update="@form :form1:dt1" actionListener="#{regelBean.save}"
oncomplete="dt1Widget.filter(); dt1Widget.getPaginator().setPage(#{regelBean.paginatorPage});"/>
甚至试过这个
public int getPaginatorPage() {
DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(":form1:dt1");
System.out.println("d.first " + d.getFirst()); // always 20 since I was on page 3
return d.getFirst()/10;
}
当我在第3页时(按预期的那种),按钮标签上的 paginatorFirst
为20。保存之后,我将永远登陆第1页。我非常感谢快速帮助,因为我将在2天内停止处理此项目,并希望在此之前解决此问题。感谢
修改 到底发生了什么事?我试过了
<p:commandButton value="x" update=":form1:dt1"
onstart="#{regelBean.saveFirst()}; alert('A'); "
oncomplete="dt1Widget.filter(); #{regelBean.oncompl()}; alert('! #{regelBean.paginatorFirst} !');"/>
随机(不)调用和saveFirst()。此外,直到第二次警报一切都没问题。但是在第二次提醒之后,我被发送到第1页。当我重新加载页面时,我将登陆第3页......