如何在更改时更新其他组件 rowsPerPage 或页面B.

我想更新显示与当前页面上显示的信息相关的信息的组件。 a primefaces dataTable, 但我找不到有关截取事件的信息 ajax, 如
onRowsPerPageChange 或者 onPageChanged.

有没有办法做到这一点?

使用 primefaces 3.0.M3 和 Glassfish 3.1

这是我的桌子。 我想要更新的组件 - 这是另一个 dataTable 在第一个的底部页脚内:


<p:datatable currentpagereporttemplate="#{msgs.pagina} {currentPage} #{msgs.of} {totalPages}" id="timbrature_dt" lazy="true" paginator="true" paginatortemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" rows="12" rowsperpagetemplate="6,12,24" selection="#{timbratureMBean.selezione}" selectionmode="single" value="#{timbratureMBean.dataModel}" var="tdett" widgetvar="ttable">
<p:ajax event="rowSelect" listener="#{timbratureMBean.onRowSelect}" oncomplete="timbDialog.show//" update="display :timbrature_dt:giustificativi_dt"></p:ajax>
<f:facet name="header">
<h:panelgrid columnclasses="columnclass-noborders" columns="1">
<p:outputpanel>
<h:outputtext value="#{msgs.dal}: "></h:outputtext>
<p:calendar locale="it" maxdate="#{timbratureMBean.oggi}" mindate="01/01/2003" navigator="true" pattern="dd/MM/yyyy" showbuttonpanel="true" value="#{timbratureMBean.daData}">
<p:ajax event="dateSelect" listener="#{timbratureMBean.dataChangeListener}" update="timbrature_dt :timbrature_dt:giustificativi_dt"></p:ajax>
</p:calendar>
<h:outputtext value=" #{msgs.al}: "></h:outputtext>
<p:calendar locale="it" maxdate="#{timbratureMBean.oggi}" mindate="01/01/2003" navigator="true" pattern="dd/MM/yyyy" showbuttonpanel="true" value="#{timbratureMBean.aData}">
<p:ajax event="dateSelect" listener="#{timbratureMBean.dataChangeListener}" update="timbrature_dt :timbrature_dt:giustificativi_dt"></p:ajax>
</p:calendar>
</p:outputpanel>
<h:outputtext value="#{msgs.timbrature}"></h:outputtext>
</h:panelgrid>
</f:facet>
<p:column>
<f:facet name="header">
#{msgs.data_comp}
</f:facet>
<amp:outputdata value="#{tdett.sDtComp}"></amp:outputdata>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.data_reale}
</f:facet>
<amp:outputdata value="#{tdett.sDtTimb}"></amp:outputdata>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.terminale}
</f:facet>
<h:outputtext value="#{tdett.nrTer}"></h:outputtext>
</p:column>
<p:column filterby="#{tdett.eU}" filteroptions="#{timbratureMBean.euOptionList}">
<f:facet name="header">
#{msgs.verso}
</f:facet>
<h:panelgroup>
<h:outputtext rendered="#{tdett.eU == 'E'}" value="#{msgs.entrata}"></h:outputtext>
<h:outputtext rendered="#{tdett.eU == 'U'}" value="#{msgs.uscita}"></h:outputtext>
</h:panelgroup>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.ora_valida}
</f:facet>
<h:outputtext value="#{tdett.oraValida}"></h:outputtext>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.ora_reale}
</f:facet>
<h:outputtext value="#{tdett.oraReale}"></h:outputtext>
</p:column>
<f:facet name="footer">
<p:datatable id="giustificativi_dt" value="#{timbratureMBean.dataList}" var="gius" widgetvar="gtable">
<f:facet name="header">
<h:panelgrid columnclasses="columnclass-noborders" columns="1">
<h:outputtext value="#{msgs.giustificativi}"></h:outputtext>
</h:panelgrid>
</f:facet>
<p:column>
<f:facet name="header">
#{msgs.voce}
</f:facet>
<h:outputtext value="#{gius.voce}"></h:outputtext>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.dal}
</f:facet>
<amp:outputdata value="#{gius.sDtIGius}"></amp:outputdata>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.al}
</f:facet>
<amp:outputdata value="#{gius.sDtFGius}"></amp:outputdata>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.nr_giorni}
</f:facet>
<h:outputtext value="#{gius.nrGiorni}"></h:outputtext>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.ora_inizio}
</f:facet>
<amp:outputnvl nullval="-" value="#{gius.oraIGius}"></amp:outputnvl>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.ora_fine}
</f:facet>
<amp:outputnvl nullval="-" value="#{gius.oraFGius}"></amp:outputnvl>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.nr_ore}
</f:facet>
<amp:outputnvl nullval="-" value="#{gius.nrOre}"></amp:outputnvl>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.nr_minuti}
</f:facet>
<amp:outputnvl nullval="-" value="#{gius.nrMinuti}"></amp:outputnvl>
</p:column>
</p:datatable>
</f:facet>
</p:datatable>
<p:dialog header="Info" hideeffect="clip" resizable="false" showeffect="clip" widgetvar="timbDialog" width="200">
<h:panelgrid cellpadding="4" columns="2" id="display">
<h:outputtext style="font-weight: bold" value="Data:"></h:outputtext>
<amp:outputdata value="#{timbratureMBean.selezione.sDtComp}"></amp:outputdata>
<h:outputtext style="font-weight: bold" value="Pausa pranzo ridotta: "></h:outputtext>
<h:outputtext value="#{timbratureMBean.gestPausaPranzo}"></h:outputtext>
<h:outputtext style="font-weight: bold" value="Timbratura non allineata: "></h:outputtext>
<h:outputtext value="#{timbratureMBean.timbNonAllineate}"></h:outputtext>
</h:panelgrid>
</p:dialog>
已邀请:

八刀丁二

赞同来自:

霍金,

有一个事件要更改页面,请参阅此处

http://cagataycivici.wordpress ... ooks/
/


<p:datatable paginator="true" rows="10" value="#{bean.items}" var="item">
<p:ajax ...="" event="page" listener="#{bean.onPaginate}" oncomplete="alert/'done'/" update="othercomponents"></p:ajax>
...


虽然我还在寻找一个活动 onChangeRows

但我当前的问题只是在用户选择的存储中,实际上此页面事件决定另存为我的页面以及选择了多少行。 如果一个

onPaginate

它以这种方式实现:


public void onPaginate/PageEvent event/{
logger.info/"I am on page:"+event.getPage///;
logger.info/"Rows per page set:"+//org.primefaces.component.datatable.DataTable/event.getSource///.getRows///;
}


您可以看到您的页面以及选择了多少行。 在更改页面时以及更改显示的行数时,都会触发此事件。
</p:datatable>

卫东

赞同来自:

我的决定使用 Primefaces 5.2.x.

我找到了一种相当简单的方法来实现这一点,我遇到了决定的问题之一 udik, 是在调用方法时 onPaginate// 他没有最新的选择价值。

所以,这就是我确保你总是拥有最后一个含义,你可以保存/将其下载到数据库或文件 cookie 或者是其他东西 /我们将其保存到文件中 cookie/.


<p:datatable .....="" currentpagereporttemplate="Total records: {totalRecords}, showing page {currentPage} of {totalPages}" paginator="true" paginatorposition="bottom" paginatortemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rows="#{controller.rowsPerPage}" rowsperpagetemplate="25,50,100">
.....
<p:ajax event="page" oncomplete="rowsPerPageUpdate//"></p:ajax>
.....
</p:datatable>
<p:remotecommand actionlistener="#{controller.onPaginate}" name="rowsPerPageUpdate"></p:remotecommand>


然后我们的控制器看起来像这样:


@Dependent
@Named
public class TableController implements Serializable {
private String rowsPerPage = "25"; //default value
.....
public void onPaginate// {
//save to the cookie
}
.....
}


主要发生魔法 remoteCommand, 在活动后将工作 ajax, 确保这一点 controller.rowsPerPage 已正确更新。

要回复问题请先登录注册