Komponente nach dem Herunterladen der Datei aktualisieren

8

Ich verwende Primefaces TabView, CommandButton und FileDownload, um eine Protokolldatei herunterzuladen. Sobald die Protokolldatei heruntergeladen wurde, möchte ich die Option anbieten, den Inhalt des Protokolls vom Server zu löschen.

Anfangs ist die Schaltfläche zum Löschen der Protokolldatei (deleteEventLogButton) deaktiviert und hat eine benutzerdefinierte Beschriftung mit dem Text "Protokolle löschen - Export erforderlich". Sobald das Protokoll exportiert wurde, sollte die Schaltfläche aktiviert werden und die Beschriftung sollte "Protokolle löschen" anzeigen.

Das Problem, das ich habe, ist, dass die Schaltfläche "Log-Datei löschen" weiterhin deaktiviert ist und die Beschriftung "Protokolle löschen - Export erforderlich" auch nach dem erfolgreichen Abschluss des Export-Ereignisses lautet.

Ich nehme an, dass exportEventLogButton- & gt; Update="deleteEventLogButton" vor dem fileDownload-Wert aufgerufen wird.

Sobald ich die Logs exportiert habe, kann ich 'F5' drücken und die Seite aktualisieren. Der deleteEventLogButton ist aktiviert und zeigt die korrekte Beschriftung.

JSF - Snippet

%Vor%

Backing Bean - Snippet

%Vor%

Ich habe versucht, das Update-Ereignis innerhalb des FileDownloads zu verschieben, aber es hat keinen Unterschied gemacht.

%Vor%

Ich habe jetzt ein paar Tage gesucht und viele Probleme gefunden, die diesem sehr nahe kommen ... aber keine, die geholfen haben. : (

Nur um die Dinge klar zu machen ... Ich habe KEINE Probleme mit dem Export. Das Problem besteht darin, dass die Schaltfläche zum Löschen der Protokolldatei nach dem Abschluss des Exports nicht aktiviert ist.

    
AceFunk 01.04.2013, 13:52
quelle

3 Antworten

22

p:commandButton ist in Ihrem Fall eine Nicht-AJAX-Schaltfläche (Sie müssen dies festlegen, indem Sie ajax="false" attribute hinzufügen). In diesem Fall haben update attribute und p:ajax tag keinen Sinn (wie sie nur für AJAX-Anfragen sind). Wenn Sie einen Datei-Download haben, sendet Ihre Anwendung Streaming eines Typs, und Sie sehen den Dialog Datei speichern. Ihre Seite wurde nicht aktualisiert. Sie müssen also PrimeFaces.monitorDownload verwenden, um dies zu tun:

%Vor%

und fügen Sie die Stoppfunktion hinzu, die die zweite Taste aktualisiert:

%Vor%     
partlov 01.04.2013, 14:23
quelle
2

Wie Balusc beantwortet hat, in frage ( revisionen ), wir können die Antwort nicht zweimal von einer einzigen Anfrage erhalten, um eine Seite nach dem Download zu aktualisieren, verwenden Sie besser das folgende Java-Skript im Download-Link (p: commandbutton) onclick-Tag.

Beispiel:

%Vor%

Dies wird automatisch die Seite nach 1 Sekunde aktualisiert, zur gleichen Zeit, d. h. vor der Aktualisierung, erhalten Sie die Download-Datei, basierend auf Ihrer Download-Reaktionszeit, erhöhen Sie die Sekunden in diesem Skript. Sekunden sollten nicht weniger als die Download-Antwortzeit sein.

    
Sadhan Shanmu 09.04.2015 05:22
quelle
1

Haben Sie versucht, eventLogExported / isEventLogExported von boolesch auf boolesch oder String zu ändern?

    
jr-123 01.04.2013 14:16
quelle

Tags und Links