2014-09-11 4 views
1

Primefaces 4.0을 사용하고 있으며 내 레코드를 업데이트하는 데이터 테이블 내부에 "onEdit"함수가 있습니다. 사용자는 참을성이 없어지고 수락 아이콘을 여러 번 클릭하면됩니다. 요청을 여러 번 실행하므로 업데이트가 여러 번 수행됩니다. 수락 아이콘을 처음 클릭 한 후 "onEdit"에 연필 아이콘을 표시하는 방법이 있습니까? 내 코드는 다음과 같습니다.primefaces에서 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&iacute;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&iacute;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

좋아, 어떻게 든 내 onEdit을 빌려 쓰지 않고 내 onEdit을 끝내면 내 문제를 해결할 수있었습니다.

      <p:ajax disabled="#{originadorMB.disableEdit}" event="rowEdit" listener="#{originadorMB.onEdit}" 
          update=":originadorForm:growl" async="true" /> 
2

blockUI primefaces 구성 요소를 사용할 수도 있습니다. 대신 아약스 이벤트를 해제의 첫 번째 클릭이 완전히 처리 될 때까지, 더 클릭에 대한 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는 당신에게 로딩 정보 또는 다른 뭔가를 보여줄 수있는 가능성을 제공합니다.

관련 문제