【发布时间】:2011-04-03 09:25:49
【问题描述】:
我会尽量简短,请留在我这里
"A.jsf" -> 托管 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 的咆哮不会被加载,但没有运气。当我单击Back 按钮时,我尝试打开upload 标志,但是在调用处理back 导航的方法之前请求了Web 表单。
它没有我想要的那么简短,因此我想为此道歉:D
【问题讨论】:
标签: java jsf primefaces