Jsf PrimeFaces文件上载队列大小

Jsf PrimeFaces文件上载队列大小,jsf,file-upload,primefaces,Jsf,File Upload,Primefaces,我需要上传多个文件。 浏览按钮将允许多个选择,然后它将显示文件列表。 然后,另一个按钮将执行实际上载 每当用户尝试上载超过10个文件时,我都需要一条错误消息 问题是,当用户选择10个以上的文件时,不一定同时选择所有文件,我会弹出一个窗口,清空文件列表,但10个以上的所有文件都会再次添加到列表中。这不应该发生,因为我希望每次捕获此异常时都清空列表 这是因为我无法确定队列大小或清空队列,因此我永远不知道文件是集合的第一个还是第十一个 public void handleFileUpload(

我需要上传多个文件。 浏览按钮将允许多个选择,然后它将显示文件列表。 然后,另一个按钮将执行实际上载

每当用户尝试上载超过10个文件时,我都需要一条错误消息

问题是,当用户选择10个以上的文件时,不一定同时选择所有文件,我会弹出一个窗口,清空文件列表,但10个以上的所有文件都会再次添加到列表中。这不应该发生,因为我希望每次捕获此异常时都清空列表

这是因为我无法确定队列大小或清空队列,因此我永远不知道文件是集合的第一个还是第十一个

   public void handleFileUpload(
                FileUploadEvent e) {

            e.getComponent().setTransient(false);

            //stuffstuffstuff

            try{
                if(list.size()>=webApplicationConst.getMultipleUploadFileLimit())
                    throw new FrontEndException("File limit exceeded", log);
                else
                    list.add(file);
            }
            catch(FrontEndException LimitExcedeed){
            list.clear();

 this.openWarningDialog(MessageConst.MESSAGE_WARNING_DIALOG_TITLE_LIMIT_EXCEDEED    );
            }

        }

既然onstart和oncomplite适用于每个文件,而不是每次上载,但仍然想知道为什么,顺便问一下,有没有办法知道队列大小、在出现异常时清空队列或停止整个上载过程而不使用javascript?

PrimeFaces 6.1用户指南提到了p:fileUpload的以下属性:

fileLimit          null   Integer   Maximum number of files allowed to upload.
fileLimitMessage   null   String    Message to display when file limit exceeds.
在用户点击Upload之前,当用户选择的文件多于fileLimit时,会显示fileLimit消息

如果您想要更全局的限制,例如每个会话,那么将fileLimit属性绑定到bean中的属性:

fileLimit="#{myBean.sessionFileLimit}"

接收上载时,在fileUploadListener中相应地减少此限制。上传后更新p:fileUpload以更新客户端上的限制。甚至可以添加disabled={myBean.sessionFileLimit==0}以在达到限制时完全禁用文件上载。

这些属性的问题在于它们阻止我选择超过N个文件。我仍然可以三思而后行地选择n-1文件,但有相同的问题:@pedro,那么不要只将fileLimit设置为静态值。将其绑定到一个变量:fileLimit={myBean.sessionorUserWhateverFileLimit}。当接收上传时,减少此限制。Update p:上传后上传文件,以更新客户端上的限制。甚至可能添加disabled={myBean.sessionorUserWhateverFileLimit==0}。这也不能解决问题。当用户尝试上载超过10个文件时,我需要它清除已上载文件和剩余文件的队列。清除实际上是一种功能,而不是一种解决方法。如果我遵循您的建议,用户可能会选择11个文件,然后在不知道任何错误的情况下上载其中的10个。@pedro,如果用户选择的文件超过了文件限制,则在点击上载之前,他将显示一条大而肥的红色文件限制消息。你可以在这里看到:我在考虑你的建议。如果我将fileLimit设置为actualFileLimit+1,它应该可以正常工作:我仍然会收到错误消息,队列将被删除,并且在清除后我不会上传第12/13/1nth个文件。也许这就是你一直以来的意思,我只是把你搞错了xD,我现在的问题是HandleFileUpload在一个由bean扩展的类中。如何让前端访问bean扩展的类中的变量?