Простые лица подтверждают проблему с диалогом в dataTable

1

У меня проблема при использовании JSF с Primefaces. Я использовал confirmDialog в dataTable. После так много раз (по крайней мере 3 раза) я нажал commandButton, confirmDialog не работает должным образом и действия медленно. Как я могу решить или любой другой совет?

Вот форма моей страницы 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);
    }
}
Теги:
jsf
primefaces

1 ответ

0

У меня была аналогичная проблема. В моем случае с такой структурой, как ваша, каждый раз, когда форма была обновлена с помощью ajax, на html-страницу был добавлен дополнительный диалог <div id="j_idt63" class="ui-confirm-dialog....

Если я поставлю <p:confirmDialog> вне <h:form> чем у меня есть только один экземпляр диалога, и он работает правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню