2013-12-23 13 views
5

Ich habe eine multiple p:fileUpload, ich muss von 1 bis N Dateien auf dem Server hochladen, nach dem Hochladen muss ich wissen, wie viele Dateien hochgeladen wurden und starten Sie dann die Methode. Wie kann ich wissen, wann alle Dateien hochgeladen wurden? Ich habe kein Event für mehrere Uploads gefunden, es gibt nur Event für einzelne Dateien, oncomplete in p:fileUpload funktioniert auch für jede Datei einzeln. Ich hatte die Idee, eine zusätzliche Schaltfläche zu verwenden, um die Verarbeitungsmethode aufzurufen, aber dies ist nicht sicher, da der Benutzer diese Schaltfläche drücken kann, bevor alle Dateien hochgeladen wurden. Wer kann mir etwas raten?Wenn das mehrfache Hochladen in p: fileUpload abgeschlossen ist?

Antwort

0

Sie können einen modalen Dialog validieren, bis Sie den Prozess abgeschlossen haben, und ihn beenden, wenn Sie ihn schließen.

10

Für andere Leute, die das gleiche Problem haben können.

Die Datei-Upload-Komponente hat die Eigenschaft 'files', die die Liste der hochzuladenden Dateien enthält. Sobald eine Datei hochgeladen wurde, wird sie aus dem Array "files" entfernt. Wenn also die letzte Datei hochgeladen wird, sind die Dateien leer. Dies könnte verwendet werden, um den Zeitpunkt zu ermitteln, zu dem die letzte Datei hochgeladen wurde. Danach können Sie den Remote-Befehl auslösen, um zu tun, was Sie wollen.

Code-Beispiel:

<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> 
+0

Dank Stirn! Funktioniert wirklich! – alacerda

+0

Was ist der Typ für das fileUploadWidget-Bean-Attribut? – bruno

+1

@bruno Das FileUploadWidget ist nur Client-Seite und nur eine Referenz auf das JS-Objekt –

Verwandte Themen