【问题标题】:When multiple upload is finished in p:fileUpload?在 p:fileUpload 中完成多个上传时?
【发布时间】:2014-01-11 21:18:53
【问题描述】:

我有多个p:fileUpload,我需要在服务器上上传1到N个文件,上传后我需要知道上传了多少文件然后开始处理方法。我如何知道所有文件何时上传?我没有找到任何多次上传的事件,只有单个文件的事件,p:fileUpload 中的oncomplete 也适用于每个文件。我有想法使用附加按钮来调用处理方法,但这并不安全,因为用户可以在所有文件上传之前按下此按钮。谁能给我一些建议?

【问题讨论】:

    标签: jsf file-upload primefaces


    【解决方案1】:

    对于可能面临同样问题的其他人。

    文件上传组件具有“文件”属性,其中包含要上传的文件列表。一旦上传了文件,它就会从“文件”数组中删除,因此当最后一个文件上传时,“文件”将为空。这可用于检测最后一个文件上传的时刻。之后你可以触发远程命令做任何你想做的事情。

    代码示例:

    <h:form enctype="multipart/form-data">
        <p:fileUpload id="files"
                 widgetVar="fileUploadWidget"
                 mode="advanced"
                 multiple="true"
                 oncomplete="handleMultiFileUploadRequest(PF('fileUploadWidget'), validateFiles);"/>
    
        <p:remoteCommand name="validateFiles" actionListener="#{Your action}"/>
    
        <script type="text/javascript">
            function handleMultiFileUploadRequest(fileupload, remoteButton) {
                if (fileupload.files.length === 0) {
                    if (remoteButton) {
                        remoteButton();
                    }
                }
            }
        </script>
    </h:form>
    

    【讨论】:

    • fileUploadWidget bean 属性的类型是什么?
    • @bruno fileUploadWidget 只是客户端,只是对 JS 对象的引用
    【解决方案2】:

    您可以验证模式对话框,直到您完成该过程,并在您关闭它时结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      相关资源
      最近更新 更多