我有一個簡單的上傳監聽器在一個視圖範圍的bean中,對於上傳的每個文件,將它添加到列表中並顯示列表。
問題是,當我按上傳按鈕一次上傳多個文件時,只有一個文件被添加到列表中,並且沒有顯示異常。另一方面,如果我上傳單個文件,等待上一個完成,則行爲是正常的。
我想到了一些併發問題,但後來,當我試圖把bean放在會話範圍內時,它正常工作。併發問題是否有可能使視圖無效?
還有其他建議嗎?非常感謝Primefaces上傳與視圖範圍的bean,併發問題?
<h:form id="form" enctype="multipart/form-data">
<p:wizard widgetVar="wiz" render="true" id="wizard">
<p:tab id="p0" title="file upload" step="0">
<p:panel>
<p:fileUpload
fileUploadListener="#{myBean.uploadedFile}"
mode="advanced" multiple="true" sizeLimit="100000"
update="fileList"/>
<p:dataList id="fileList" value="#{myBean.filesName}" var="file">#{file}</p:dataList>
豆子:
public void uploadedFile(FileUploadEvent event) {
try {
files.add(event.getFile());
filesName.add(event.getFile().getFileName());
} catch (Exception e) {
e.printStackTrace();
}
}
如果添加process =「@ this」並刪除enctype,該怎麼辦? – Darka
@Darka'enctype =「multipart/form-data」'是通過Web表單提交文件上傳時必需的(這是一種HTML通用的Web開發概念)。 –
我想你應該使用'@ SessionScoped'託管bean來讓你的例子工作。 –