後要求我在JSF 2.2的一種形式:JSF沒有重定向文件輸入阿賈克斯
<h:form enctype="multipart/form-data">
<h:outputLabel>title *</h:outputLabel>
<h:inputText value="#{bean.title}" required="" />
<h:outputLabel>Image *</h:outputLabel>
<h:inputFile value="#{bean.picutreFile}" a:accept="image/*">
<f:ajax listener="#{bean.uploadPicture}" />
</h:inputFile>
<h:commandLink action="#{bean.save}">
Save
</h:commandLink>
</h:form>
功能:
public String save() {
return "/index?faces-redirect=true";
}
public void uploadPicture() {
// Do nothing
}
但之後我選擇的圖像,並得到uploadPicture
函數的調用, save
函數不能重定向頁面。它調用save
但重定向不起作用,只刷新當前頁面。
如果我跳過文件上傳,它會正常重定向。我怎樣才能使它工作?
編輯
我注意到,如果我刪除了ajax <f:ajax listener="#{bean.uploadPicture}" />
它按預期工作。但我必須擁有該AJAX,因爲我想在上傳後顯示圖像。
EDIT 2
我可以看到,所謂的阿賈克斯之後,JSF在它的身體產生在頁面底部的奇怪的IFRAME與標籤,當我按「Save` 即 iframe是重定向到目的地。這是爲什麼??
哪個JSF impl/version?早期的2.2版本與h:inputFile有童年的錯誤。有關提示,另請參閱http://stackoverflow.com/tags/jsf/info。 – BalusC
@BalusC當我在NetBeans的GlassFish庫中打開JSF的JAR時,我可以看到'Bundle-Name:Mojarra JSF Implementation 2.2.12(20150720-0848)https:/ /svn.java.net/svn/mojarra~svn/tags/2.2.12 @ 14885',我也使用GlassFish 4.1.1 – nrofis