我會盡量儘量簡短,請留在我這裏有沒有辦法在點擊按鈕時不發送整個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