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);
}
}