我在spinner中使用ajax来调用backing bean中的一些动作。
这是我的代码:
<b:panel>
<p:dataTable id="orderDataTable" var="order" value="#{orderViewBean.orders}"
widgetVar="ordersDataTable" tableStyle="table-layout: auto;">
<p:column headerText="Created" filterBy="#{order.creationDate}" filterStyle="display: none"
filterMatchMode="contains">
<h:outputText value="#{order.creationDate}"/>
</p:column>
<p:column headerText="Created By" filterBy="#{order.createdBy}" filterStyle="display: none"
filterMatchMode="contains">
<h:outputText value="#{order.createdBy}"/>
</p:column>
</p:dataTable>
<b:panelGrid colSpans="4,4,4">
<b:commandButton action="#{orderViewBean.previousPage}" value="Previous"
look="primary" process="@this:uploadOrderDataPanel" styleClass="pull-left"
disabled="#{!orderViewBean.page.hasPrevious()}" type="submit">
<p:ajax immediate="true" update=":companyOrdersForm"/>
</b:commandButton>
<b:row>
<div class="text-center">
<h:outputLabel value="Page"/>
<p:spinner value="#{orderViewBean.currentPage}" size="3"
min="#{orderViewBean.page.totalPages > 0 ? 1 : 0}"
max="#{orderViewBean.page.totalPages}">
<p:ajax listener="#{orderViewBean.changePageAjax}"
update="@form" process="@this" immediate="true"/>
</p:spinner>
<h:outputLabel value="Of"/>
<h:outputText value="#{orderViewBean.page.totalPages}"/>
</div>
</b:row>
<b:commandButton action="#{orderViewBean.nextPage}" value="Next"
look="primary" process="@this:uploadOrderDataPanel" styleClass="pull-right"
disabled="#{!orderViewBean.page.hasNext()}" type="submit">
<p:ajax immediate="true" update=":companyOrdersForm"/>
</b:commandButton>
</b:panelGrid>
</b:panel>
当我将一些数字放入微调器并按Enter键时,则调用changePageAjax(这没关系)以及orderViewBean.previousPage(这不是正常的)。我可以避免调用其他操作吗?
在相关的ajax标签上添加partialSubmit="true"
属性。从PF文档中:
PartialSubmit通过仅将部分处理的组件添加到ajax请求帖子来减少网络流量。对于具有许多输入组件的大页面,partialSubmit非常有用,因为它会导致更轻量级的请求。比较记录器显示的后期数据的差异。
也可以看看: