내가 다음 <p:dialog>
p : ajax = "false"인 제출의 유효성 검증 오류에서 대화 상자가 닫히고 대화 상자를 열어 두는 방법?
<p:dialog id="dlgDownload" header="#{appmsg['header.download.popup']}" widgetVar="downloadDlg" resizable="true" modal="true" closable="true" width="640" dynamic="false">
<h:form id="frmDownload">
<ui:include src="downloadDialog.xhtml" />
</h:form>
</p:dialog>
(가) 파일은 다음 다운로드 버튼을 포함 포함되어 있습니다
는<p:commandButton id="btnDlgDownload" value="#{appmsg['action.download.label']}" title="#{appmsg['action.download.label']}"
icon="ui-icon-arrowthickstop-1-s" ajax="false" oncomplete="if (!args.validationFailed){downloadDlg.hide();} else {downloadDlg.show();}" process="@this" update=":#{p:component('pnlDownload')}" >
<p:fileDownload value="#{downloadController.downloadFile()}" />
</p:commandButton>
이 파일을 다운로드 <p:fileDownload>
를 사용, 이것은 내가 실행하는 데 <p:fileDownload>
에 대한 ajax="false"
를 사용하는 것을 의미합니다.
하지만 대화 상자에 유효성 검사 오류가있는 경우 대화 상자 창이 닫히는 것을 볼 수 있습니다. 오류 메시지가 대화 상자 창에 표시되고 기본 페이지에는 표시되지 않도록하려고합니다.
대화 상자 창에 오류 메시지를 표시 할 수 있도록 대화 상자를 열어 두는 방법은 무엇입니까? SSCCE 에 내 시도를 찾아주세요
@Balusc는 기본적으로 parent.xhtml이있는 곳 다운로드 버튼 상주과 p에 포함 된 downloadDialog.xhtml가 : 대화 상자가
<p:messages id="globalMessages" globalOnly="true" showDetail="true"
showSummary="true" closable="true" />
<h:form = "parentForm" >
<p:commandButton id="btnDownload"
value="Download"
title="Download"
icon="ui-icon-arrowthickstop-1-s" onclick="downloadDlg.show();">
</p:commandButton>
</h:form>
<p:dialog id="dlgDownload" header="Download" widgetVar="downloadDlg" resizable="true"
modal="true" closable="true" width="640" dynamic="false" visible="#{frmDownload.submitted and facesContext.validationFailed}">
<h:form id="frmDownload" binding="#{frmDownload}">
<ui:include src="downloadDialog.xhtml" />
</h:form>
</p:dialog>
내부 downloadDialog .xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions">
<p:outputPanel id="pnlDownload">
<h:panelGrid id="dateDisplayGrid" columns="4" style="margin-bottom:10px" cellpadding="5" rendered="#{downloadForm.displayDates}">
<p:calendar id="strtdt" readonlyInput="true" size="12" value="#{downloadForm.startDate}" >
</p:calendar>
<h:outputText value="#{appmsg['label.to']}" />
<p:calendar id="enddt" readonlyInput="true" size="12" value="#{downloadForm.endDate}"
pattern="#{dateFormatting.shortDateFormat}" navigator="true" >
<f:validator validatorId="dateRangeValidator" />
<f:attribute name="startDate" value=":#{p:component('strtdt')}" />
</p:calendar>
<p:message id="dateError" for="enddt" showDetail="true" showSummary="false"></p:message>
</h:panelGrid>
<p:commandButton id="btnDlgDownload" value="Download" title="Download"
icon="ui-icon-arrowthickstop-1-s" ajax="false" oncomplete="if(!args.validationFailed)downloadDlg.hide();" >
<p:fileDownload value="#{downloadController.downloadFile()}" />
</p:commandButton>
<p:button id="btnDlgCancel" value="#{webmsg['action.cancel']}" onclick="downloadDlg.hide(); return false" href="#" />
</p:panel>
</p:outputPanel>
</ui:composition>
대화 상자 창에서 다운로드 버튼을 누르면 오류가 상위 HTML에 표시되고 대화 상자가 닫힌 채로 유지됩니다. 그러나 부모 페이지에서 다운로드 버튼을 누르면 대화 상자 창이 다시 나타나고 내부 대화 상자에 오류 메시지가 나타납니다.
도움 주셔서 감사합니다.