PrimeFaces fileupload没有上传第二个和即将发布的文件

时间:2018-05-08 06:29:40

标签: primefaces jsf-2

我正在使用primefaces 3.4.2。

我正在尝试上传多个文件,但每次选择都选择了一次,但是第一个文件调用了侦听器,并且没有为该行中的其他文件调用侦听器。

可能导致此问题的原因是什么? 这是jsf页面的相关部分

<p:dialog id="uploadNcstFileDialog" closable="true"
        widgetVar="uploadFileWidget" header="file Upload" modal="true"
        resizable="false">
        <h:form id="uploadFileForm" prependId="false"
            enctype="multipart/form-data">
            <h:outputLabel value="Choose a file to upload" />
            <p:panel style="width:600px;height:200px;">
                <p:fileUpload
                    fileUploadListener="#{bulkSmsMainBean.handleFileUpload}"
                    mode="advanced" uploadLabel="Upload" cancelLabel="Stop"
                    label="Dosya Seç" allowTypes="/(\.|\/)(pdf|gif|jpe?g|doc(x)?|xls(x)?|msg)$/"
                    invalidFileMessage="#{msgs['docformat.error']}"
                    update=":bulkSmsDetailTabs:bulkSmsDocumentListForm:documentListDataTableId" />
                <p:commandButton styleClass="button-type4"
                    style="float:right;margin-top:22px" value="Cancel" position="right"
                    onclick="uploadFileWidget.hide();return false;" />
            </p:panel>
        </h:form>
    </p:dialog>

这是听众

public void handleFileUpload(FileUploadEvent event) {
    UploadedFile uploadedFile = event.getFile();
    String fileName = uploadedFile.getFileName();
    int pos = fileName.lastIndexOf('.');
    String ext = fileName.substring(pos + 1);

    if (uploadedFile.getFileName().contains("\\")) {
        fileName = fileName.substring(fileName.lastIndexOf('\\', fileName.length()) + 1);
    }


    loadDocumentList();
}

enter image description here

1 个答案:

答案 0 :(得分:0)

最好的方案是更新primefaces版本,因为你可以在版本5.3&gt;中使用顺序属性。

Sequential attribute to fileUpload - Primefaces Project

<p:fileUpload mode="advanced" dragDropSupport="true" multiple="true"
                          sequential="true"
                          label="Procurar XML" cancelLabel="Cancelar" uploadLabel="Importar"
                          allowTypes="/(\.|\/)(xml)$/" sizeLimit="100000"
                          fileUploadListener="#{doctosFiscaisImportarController.uploadFile}"/>

但如果你不能,你可以尝试这样的事情:

Sequential Uploads by JavaScript