Закрытие диалогового окна 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>