我試圖使用<p:fileUpload>
來上傳文件。這裏的觀點:p:fileUpload調用每個文件的bean構造函數
<h:form enctype="multipart/form-data">
<p:growl id="messages" showDetail="true" />
<p:fileUpload
fileUploadListener="#{viewscopedBean.handleFileUpload}"
mode="advanced" dragDropSupport="true" multiple="true"
update="messages" />
</h:form>
豆:
@ManagedBean
@ViewScoped
public class ViewscopedBean implements Serializable{
private List<UploadedFile> uploadedFiles; //to remember which files have been uploaded
public ViewscopedBean() {
super();
System.out.println("@constructor");
uploadedFiles = new ArrayList<UploadedFile>();
}
public void handleFileUpload(FileUploadEvent event) {
System.out.println("! HANDLE FILE UPLOAD !");
// do something
}
public List<UploadedFile> getUploadedFiles() {
return uploadedFiles;
}
public void setUploadedFiles(List<UploadedFile> uploadedFiles) {
this.uploadedFiles = uploadedFiles;
}
}
web.xml
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>
org.primefaces.webapp.filter.FileUploadFilter
</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>512000</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
當我點擊upload button
,進度條被填滿至100%(像它的東西),但是然後頁面被重新加載(每個上傳的文件都會調用構造函數) - handleFileUpload
方法從不被調用。
沒有任何錯誤或警告,它只是沒有做它應該做的。我有JSF 2.0並使用Primefaces 4,也許有問題?
這是怎麼造成的,我該怎麼解決呢?
你必須有你這樣的表格上,當你的文件上傳''嘗試這樣你是否有任何運氣 –
SRy
嗨,是的,我已經試過了。我將更新我的代碼 – Niko
而你的bean是'viewscopedBean',你能顯示'整個bean decleration'和你使用的是什麼版本的'JSF'? – SRy