我正在使用Primefaces 4.0,我在一个更新我的记录的数据表中有一个“onEdit”函数。 问题是如果用户不耐烦并多次点击接受图标;它会多次触发请求,因此它会多次执行更新。 那么有没有办法让“onEdit”在首次点击“接受”图标后显示铅笔图标? 这是我的代码:
<p:dataTable var="d" value="#{originadorMB.listOriginadorDetalleDTO}" id="addList" editable="true"
paginator="true" rows="10" rowKey="#{d.idMensajeria}" rowIndexVar="rowIndex"
selection="#{originadorMB.selectedOriginadorDetalleDTO}" selectionMode="single"
filteredValue="#{originadorMB.filteredListMensajerias}"
emptyMessage="No hay registros" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="10,20,40" >
<f:facet name="header">
Mensajerías
</f:facet>
<p:ajax event="rowEdit" listener="#{originadorMB.onEdit}" update=":originadorForm:growl" />
<p:ajax event="rowEditCancel" listener="#{originadorMB.onCancel}" update=":originadorForm:growl" />
<p:ajax event="rowSelect" update=":originadorForm:growl"
listener="#{originadorMB.onRowDetalleSelect}"/>
<p:column id="idMensajeriaColumn" filterBy="idMensajeria" style="width:30%"
headerText="Clave Mensajería" filterMatchMode="contains">
<h:outputText value="#{d.idMensajeria}" />
</p:column>
<p:column headerText="Activo">
<p:cellEditor>
<f:facet name="output">
<p:selectBooleanCheckbox disabled="TRUE" value="#{d.activar}"/>
</f:facet>
<f:facet name="input">
<p:selectBooleanCheckbox value="#{d.activar}"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:6%">
<p:rowEditor />
</p:column>
</p:dataTable>
提前致谢!
答案 0 :(得分:2)
您也可以使用blockUI primefaces组件。不是禁用ajax事件,而是阻止UI进行进一步的点击,直到完成第一次点击:
<p:ajax event="rowEdit" listener="#{originadorMB.onEdit}"
onstart="PF('blockUI').show();" oncomplete="PF('blockUI').hide();"/>
<p:blockUI block="addList" widgetVar="blockUI">
<h:outputText value="Some Loading Text"></h:outputText>
<h:graphicImage value="path/To/Loading.gif" />
</p:blockUI>
除了所需的效果之外,blockUI还可以显示一些加载信息或其他内容。
答案 1 :(得分:0)
好吧,我以某种方式设法通过在onEdit的乞讨中禁用并在我的onEdit结束时启用来解决我的问题。
<p:ajax disabled="#{originadorMB.disableEdit}" event="rowEdit" listener="#{originadorMB.onEdit}"
update=":originadorForm:growl" async="true" />