Exécuter l'action du haricot de sauvegarde sur la charge?
Je voudrais construire une page de résultats d'un rapport d'exportation de la page. Cette page de résultats doit afficher l'état de l'exportation et de proposer le téléchargement de cette exportation.
L'exportation se fait dans une méthode d'action. Je peux l'exécuter via un commandButton
mais il doit être exécuté automatiquement sur la charge.
Comment puis-je y arriver?
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;
}
Précisions: Est-ce faisable avec a4j? J'ai pensé à une solution qu'une requête Ajax déclenche mon downloadReport
action et sa demande est le fichier de téléchargement.
source d'informationauteur guerda
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également résoudre ce en JSF 2.0 à l'aide de composants de système d'événements, plus précisément le PreRenderViewEvent.
Il suffit de créer un téléchargement de vue (/télécharger.xhtml) qui déclenche un téléchargement auditeur avant de le rendre.
Puis, dans votre rapport bean (définies à l'aide de la JSR-299), vous appuyez sur le fichier et la marque de la réponse aussi complète.
C'est tout là est à lui!
Vous pouvez lien vers la page de téléchargement (/télécharger.jsf), ou utiliser un HTML de la balise meta pour rediriger sur une page splash.
La réponse précédente va soumettre le formulaire et peut-être changer la navigation.
Utilisation
<rich:jsFunction action="#{bean.action}" name="loadFunction" />
et puis fenêtre.onload = loadFunction;
Vous pouvez envoyer qu'une seule réponse à chaque demande. Vous ne pouvez pas envoyer des deux réponses (la page elle-même et le fichier à télécharger) par demande. Le mieux ce que vous pouvez faire est d'utiliser Javascript pour soumettre un (caché) forme après chargement de la page.
Utiliser les événements