2014-11-24 3 views
1

Primeface에서 JSF를 사용할 때 문제가 있습니다. dataTable에서 confirmDialog를 사용했습니다. 여러 번 (적어도 3 번) commandButton을 클릭 한 후 confirmDialog가 제대로 작동하지 않고 동작이 느립니다. 어떻게 해결할 수 있습니까?Primefaces 데이터 테이블의 확인 문제

여기 내 JSF 페이지의 양식입니다.

<h:form id="salePersonTableForm"> 
    <h:commandLink action="#{ManageSalePersonActionBean.createNewSalePerson}"> 
     <h:panelGrid columns="2"> 
      <h:graphicImage value="/images/add.png" styleClass="command-image" /> 
      <h:outputText value="#{label['COMMON_ADDNEW_LINK']}" styleClass="command-link" /> 
     </h:panelGrid> 
    </h:commandLink> 
    <p:outputPanel id="listPanel"> 
     <table> 
      <tr> 
       <td> 
        <p:selectOneMenu converter="omnifaces.SelectItemsIndexConverter" id="selectSalePersonCriteria" value="#{ManageSalePersonActionBean.selectedCriteria}" 
         style="width:150px;font-size:13px;"> 
         <f:selectItem itemLabel="Select Criteria" /> 
         <f:selectItems value="#{ManageSalePersonActionBean.criteriaItems}" var="criteriaItem" /> 
        </p:selectOneMenu> 
       </td> 
       <td> 
        <p:inputText id="customerCriteria" style="width:150px;" value="#{ManageSalePersonActionBean.criteria.criteriaValue}" /> 
       </td> 
       <td> 
        <p:commandButton action="#{ManageSalePersonActionBean.searchSalePerson}" id="searchSalePersonButtonBtn" update=":salePersonTableForm" value="Search" style="font-size:13px;" /> 
       </td> 
       <td> 
        <p:commandButton action="#{ManageSalePersonActionBean.init()}" id="resetSalePersonButtonBtn" update=":salePersonTableForm" value="Reset" style="font-size:13px;" /> 
       </td> 
      </tr> 
     </table> 
     <p:dataTable var="salePerson" value="#{ManageSalePersonActionBean.salePersonList}" id="salePersonTable" paginator="true" rows="10" style="width:100%;" 
      paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10, 15" 
      rowIndexVar="index"> 
      <p:column headerText="No" style="width:50px;font-size:13px;"> 
       <h:outputText value="#{index + 1}" style="font-size:13px;" /> 
      </p:column> 
      <p:column headerText="SalePersonID" style="font-size:13px;"> 
       <h:outputText value="#{salePerson.salePersonCode}" style="font-size:13px;" /> 
      </p:column> 
      <p:column headerText="Name" style="font-size:13px;"> 
       <h:outputText value="#{salePerson.salePersonName}" style="font-size:13px;" /> 
      </p:column> 
      <p:column headerText="AccountStatus" style="font-size:13px;"> 
       <h:outputText value="#{salePerson.accountDisable == true ? 'lock' : 'unlock'}" style="font-size:13px;" /> 
      </p:column> 
      <!-- Lock/Unlock --> 
      <p:column style="width:70px;"> 
       <p:commandButton action="#{ManageSalePersonActionBean.changeLockStatus(salePerson)}" value="#{salePerson.accountDisable == false ? 'lock' : 'unlock'}" 
        update="salePersonTable" style="font-size:13px;"> 
        <p:confirm header="Confirmation" message="Are you sure?" icon="ui-icon-alert" /> 
       </p:commandButton> 
      </p:column> 
      <!-- ########## --> 
      <p:column style="width:30px;"> 
       <p:commandLink action="#{ManageSalePersonActionBean.prepareUpdateSalePerson(salePerson)}" update=":salePersonEntryForm"> 
        <p:graphicImage value="/images/edit.png" styleClass="command-image" /> 
       </p:commandLink> 
      </p:column> 
      <p:column style="width:30px;"> 
       <p:commandLink id="deletesalePersonLink" actionListener="#{ManageSalePersonActionBean.deleteSalePerson(salePerson)}" update=":salePersonTableForm"> 
        <p:graphicImage value="/images/delete.png" styleClass="command-image" /> 
        <p:confirm header="Confirmation" message="Are you sure?" icon="ui-icon-alert" /> 
       </p:commandLink> 
      </p:column> 
     </p:dataTable> 
     <p:confirmDialog global="true" showEffect="fade" hideEffect="explode"> 
      <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" /> 
      <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" /> 
     </p:confirmDialog> 
    </p:outputPanel> 
</h:form> 

여기는 ManagedBean에서 처리됩니다.

public void changeLockStatus(SalePerson salePerson) { 
    try { 
     salePerson.setAccountDisable(!salePerson.isAccountDisable()); 
     salePersonService.updateSalePerson(salePerson); 
    } catch (SystemException e) { 
     handelSysException(e); 
    } 
} 

답변

0

나는 비슷한 문제가있었습니다. 필자의 경우에는 아약스에 의해 폼이 업데이트 될 때마다 html 페이지에 추가 대화 <div id="j_idt63" class="ui-confirm-dialog...이 추가되었습니다.

<p:confirmDialog><h:form> 외부에 넣는 경우 대화 상자가 하나만있는 경우 제대로 작동합니다.

관련 문제