Ich möchte eine Ergebnisseite für eine Berichtsexport-Seite erstellen. Diese Ergebnisseite muss den Status des Exports anzeigen und den Download dieses Exports anbieten.Back-Bean-Aktion beim Laden ausführen?
Der Export erfolgt in einer Aktionsmethode. Ich kann es über eine commandButton
ausführen, aber es muss automatisch beim Laden ausgeführt werden.
Wie kann ich das erreichen?
JSF:
<h:commandButton value="Download report" action="#{resultsView.downloadReport}"/>
Backing Bean:
public String downloadReport() {
...
FileDownloadUtil.downloadContent(tmpReport, REPORT_FILENAME);
// Stay on this page
return null;
}
Klarstellung: Ist das machbar mit a4j? Ich dachte an eine Lösung, dass eine Ajax Anfrage meine downloadReport
Aktion auslöst und ihre Anfrage ist der Dateidownload.
Ich habe diese Lösung versucht. Es funktioniert nur, wenn die Seite kein anderes Steuerelement hat. Wenn die Seite andere Steuerelemente wie die Dropdown-Box-Auswahl hat und die Seite ein paar Mal vor und zurück ist, ruft 'download()' weiter auf und der Wert wird für immer zurückgesetzt. Gibt es also einen Weg, seine Ausführung für immer nur einmal zu schützen? – huahsin68