Я постараюсь быть максимально кратким, пожалуйста, оставайтесь со мной здесь
"A.jsf" -> управляемый компонент: bean "#{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 не загрузится, но не повезло. Я пытаюсь включить флаг upload, когда нажимаю кнопку Back, но веб-форма запрашивается до вызова метода, обрабатывающего навигацию back.
Это не так кратко, как хотелось бы, поэтому я хочу извиниться за это :D