Primefaces 5 FileUploadEvent,并非所有文件都在上传

时间:2014-08-14 17:16:23

标签: java primefaces xhtml multifile-uploader

我正在Primefaces 5中开发一个页面,并在高级模式下使用p:fileUpload标记来上传多个文件。

我的文件上传工作正常,但在我测试的时候,我注意到有时并非所有文件都是实际上传的。例如:我上传了6个文件,实际只上传了4个文件。

当我查看跟踪日志时,我也注意到该方法只运行了4次(上一个示例),这让我相信只有4个ajax请求超出了预期的6个。

在页面

<h:form enctype="multipart/form-data">
     <p:fileUpload   fileUploadListener="#{fileUploaderBean.uploadFile}"
                     mode="advanced"
                     dragDropSupport="true"
                     multiple="true"
                     update="filesId"
                     sizeLimit="100000"
                     ajax="true"/>
<p:outputPanel id="filesId">
     <p:dataTable    value="#{fileUploaderBean.uploadedFiles}" 
                     var="uploadedFile" 
                     id="filesTable" 
                     action="#{fileUploaderBean.testAjax}">
           <p:column headerText="Uploaded File/s">
                 <h:outputText value="#{uploadedFile}" />
           </p:column>
     </p:dataTable>
</p:outputPanel>

private List<UploadedFile> filesList = Collections.synchronizedList(new ArrayList<UploadedFile>());
private List<String> uploadedFiles = Collections.synchronizedList(new ArrayList<String>());

public void uploadFile (FileUploadEvent fileUploadEvent) throws IOException 
{
    LOGGER.info("Running uploadFile fileUploadEvent={}", fileUploadEvent);

    saveFileToStagingFolder(fileUploadEvent.getFile().getFileName(), fileUploadEvent.getFile().getInputstream());
    uploadedFiles.add(fileUploadEvent.getFile().getFileName());

    LOGGER.info("uploadFile process complete");
}

1 个答案:

答案 0 :(得分:0)

将此添加到web.xml

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>

我只在我的web.xml中忘记添加过滤器本身

<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>faces</servlet-name>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

看起来FileUploader可以在没有它的情况下工作但根本不是很好。会想到一个配置错误就像记录一些东西来表明问题所在。