我有一个简单的上传监听器在一个视图范围的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来让你的例子工作。 –