我会尽量简短,请留在我这里
"A.jsf" -> managed bean : 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”-> 托管 bean:bean2
...
<p:growl id="msgs" showDetail="true"/>
...
当我点击上传时,它给我一个咆哮的错误消息“你没有上传权限。”,这很好。但是当我单击“返回”时,我将转到 B.jsf,我看到了咆哮消息“您没有上传权限”。再次。似乎正在发生的事情是当我单击“返回”时,我发送其他表单请求上传,然后生成相同的错误消息,然后显示在 B.jsf 中。有没有办法解决这个问题,除了将“后退”按钮放入一个空表单之外,因为现在我有两个按钮彼此叠放,而不是并排。我尝试这样做:
FacesContext.getCurrentInstance().addMessage("tom", msg);
希望它会发送到 id="tom" 的组件,所以 id=msgs 的咆哮不会得到负载,但没有运气。upload
当我单击按钮时,我尝试打开标志,但是在调用处理导航Back
的方法之前请求了 Web 表单。back
它没有我想要的那么简短,因此我要为此道歉:D