我会尽量尽量简短,请留在我这里有没有办法在点击按钮时不发送整个Web表单?
“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” - >管理的bean:bean2
...
<p:growl id="msgs" showDetail="true"/>
...
当我点击上传时,它给我一个咆哮的错误信息“你没有上传权限”,这很好。但是当我点击“返回”时,会将我带到B.jsf,我看到咆哮消息“您没有上传权限”。再次。似乎发生的事情是,当我点击“返回”时,我发送其他表单请求上传,然后生成相同的错误消息,然后显示在B.jsf上。有没有办法解决这个问题,除了把“后退”按钮放到一个空的表格中,因为现在我有两个按钮站在彼此的顶部,而不是并排。我试着这样做:
FacesContext.getCurrentInstance().addMessage("tom", msg);
希望它会发送到与ID =“汤姆”组件,所以后来的咆哮与ID =封邮件,不会得到负荷,但没有运气。当我单击Back
按钮时,我尝试打开upload
标志,但在处理back
导航的方法被调用之前,Web表单被请求。
它不是简短,因为我想它是,所以我想为此道歉:
在'Back'按钮的'p:commandButton'上取出'ajax =“false”'确实不会阻止'fileUploadListener'被调用,但是也阻止了'导航流程'。因此,'Back'按钮不会带我到哪里,但是'display:inline'很好用,非常感谢您花费时间在它上面,BalusC – 2010-08-25 14:07:59
不客气。 – BalusC 2010-08-25 14:10:11