Я постараюсь быть максимально кратким, пожалуйста останься со мной здесь
"A.jsf" -> управляемый боб: бин "# {bean.list}": приведет нас к B.jsf
<p:growl id="msgs" showDetail="true"/>
<h:form id="myform1" enctype="multipart/form-data">
<p:panel header="Upload" style="font-size: 11px;">
<h:panelGrid columns="2" cellpadding="10">
<h:outputLabel value="Drawing:" />
<p:fileUpload fileUploadListener="#{bean.handleFileUpload}" update="msgs" allowTypes="*.*;"/>
</h:panelGrid>
<p:commandButton ajax="false" immediate="true" id="back" value="Back" action="#{bean.list}"/>
<p:commandButton ajax="false" id="persist" value="Persist" action="#{bean.handleRevision}" />
</p:panel>
</h:form>
Затем handleFileUpload ()
if(!upload){
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "You do not have permission to upload.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
...
"B.jsf" -> управляемый компонент: bean2
...
<p:growl id="msgs" showDetail="true"/>
...
Когда я нажимаю кнопку загрузки, он Дайте мне рычание с сообщением об ошибке «У вас нет прав на загрузку», что хорошо. Но затем, когда я нажимаю «Назад», который приведет меня к B.jsf, я вижу рычание «У вас нет разрешения на загрузку». очередной раз. Кажется, что происходит, когда я нажимаю «Назад», я отправляю другой запрос формы для загрузки, который затем генерирует то же сообщение об ошибке, которое затем отображается в B.jsf. Есть ли способ исправить это, кроме того, чтобы поместить кнопку «Назад» в пустую форму, потому что теперь у меня есть две кнопки, стоящие друг над другом, а не рядом. Я пытаюсь сделать это:
FacesContext.getCurrentInstance().addMessage("tom", msg);
в надежде, что он отправит компонент с id = "tom", так что рычание с id = msgs не получит нагрузки, но не повезло. Я пытаюсь включить флаг загрузки
, когда нажимаю кнопку Назад
, но веб-форму запрашивают до вызова метода, который обрабатывает навигацию назад
.
Это не так кратко, как мне бы хотелось, поэтому я хочу извиниться за это: D