Закрытие диалогового окна Primefaces отключает ввод на главной странице

Вот код диалога

<title><ui:insert name="title">#{msg['trip.bus.unsaved.warning']}</ui:insert></title>
    <h:outputStylesheet library="css" name="theme.css" />
</h:head>

<h:body>
    <ui:composition>
    <h:form id="unsavedBusValidationReturnToCharterForm" width="450px">
        <p:panelGrid columns="1">
            <p:row>
                <p:outputLabel value="#{msg['trip.bus.unsaved.validation.string1']}" style="color:red; font-weight:bold; font-size:12px;"/>
            </p:row>
            <p:row>
                <p:outputLabel value="#{msg['trip.bus.unsaved.validation.string2']}" style="color:red; font-weight:bold; font-size:12px"/>
            </p:row>
            <p:row>
                <p:outputLabel value="#{msg['trip.bus.unsaved.validation.string3']}" style="color:red; font-weight:bold; font-size:12px"/>          </p:row>
        </p:panelGrid>
        <p:commandButton value="#{msg['trip.bus.cancellation.button.ok']}" style="width:140px;" type="submit" onclick="PF('unsavedBusValidReturnToChartDialog').hide();"
        action="#{tripInformationController.returnToTripInfo}" update="busPg">
            <!-- <f:ajax listener="PF('unsavedBusValidReturnToChartDialog').hide();" /> -->
        </p:commandButton>
        <p:spacer width="4px"></p:spacer>
        <p:commandButton value="#{msg['trip.bus.cancellation.button.cancel']}" style="width:140px;"
        onclick="PF('unsavedBusValidReturnToChartDialog').hide();"></p:commandButton>
        </h:form>
    </ui:composition>
</h:body>
</html>

Это диалог, который включает этот код

            <p:dialog widgetVar="unsavedBusValidReturnToChartDialog" showHeader="true" showEffect="clip" hideEffect="clip" appendToBody="true" width="auto"
                height="auto" resizable="true" draggable="true" modal="true"
                styleClass="customDialog dialogTitleNone">
                    <ui:include src="/charter/unsaved_bus_validation_return_to_charter.xhtml" />
            </p:dialog>

Затем этот метод запускается, когда я нажимаю кнопку ОК, чтобы перейти назад на одну страницу.

public String returnToTripInfo() {
        logger.info("returnToTripInfo() entry");
        doRemoveUnsavedBus();

        if (getBusInfoListVo().size() > 0) {
            busbutton = "Edit Buses";
            List<FinancialDetailVo> tempFinancialDetails = busInfoSer.getFinancialDetails(tripInfoVo.getCharterId());
            if (tempFinancialDetails != null && tempFinancialDetails.size()>0 ) {
                tripInfoVo.setFinancialDetailVoSet(tempFinancialDetails);
                calculateFinancialtotalAmount();
            }
            else
            {
                tripInfoVo.setFinancialDetailVoSet(null);
                tripInfoVo.setFinancialTotalAmount(null);
                calculateFinancialtotalAmount();

            }

            if(getBusInfoVo().getSelectStatus()==4)
            {
                setDisableBus(false);
                setDisableCharges(false);
                setDisableBusStatus(false);
                setDisableBusSave(false);
            }
        }
        logger.info("returnToTripInfo() exit");
        return "Charter_information_tab.xhtml";
    }

Когда диалоговое окно закрывается и перемещается назад на один экран, поля ввода на этом экране действуют так, как будто они отключены. Я попробовал appendToBody="true" и appendTo="@(body)". Я использую Primefaces версии 6.

Мне просто нужно, чтобы вводимые данные на экране навигации были доступны для редактирования после того, как диалог перемещается и закрывается.

1 ответ

Страница перемещалась до того, как hideEffect смог завершиться, поэтому диалоговое окно не могло закрыться до перехода по странице. Я убрал hideEffect, и диалоговое окно смогло полностью закрыться перед навигацией.

<p:dialog widgetVar="unsavedBusValidReturnToChartDialog" showHeader="true" showEffect="clip" appendToBody="true" width="auto"
                height="auto" resizable="true" draggable="true" modal="true"
                styleClass="customDialog dialogTitleNone">
                    <ui:include src="/charter/unsaved_bus_validation_return_to_charter.xhtml" />
            </p:dialog>
Другие вопросы по тегам