IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

générer état et redirection


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Par défaut générer état et redirection
    Bonjour tous le monde,
    Dans une page JSF j'ai un bouton qui pemet d'ajouter de créer un nouveau client et générer un contrat sous format PDF (avec JasperReport), si les données du client sont valides alors le ficher sera généré et une autre page sur le navigateur s'affiche contant un message pour dire que l'ajout est fait avec succès. Mon porblème que le ficher PDF s'affiche mais la redirection ne se fait pas, et si je met la méthode qui génére le fichier en commantaire, la redirection se fait.
    page web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton value="Valider" action="#{activationController.creatContract}">
    bean activation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public String creatContract() {
    //Ajout Client
    viewContract()
    return "contractSaved";
    }
    public String viewContract(){
    //
    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
    byte[] bytes;
    bytes = JasperExportManager.exportReportToPdf(jasperPrint);
    response.setContentType("application/pdf");
    response.addHeader("Content-disposition", "attachment;filename=contrat.pdf");
    response.setContentLength(bytes.length);
    ServletOutputStream servletOutputStream = response.getOutputStream();
    servletOutputStream.write(bytes, 0, bytes.length);
    servletOutputStream.flush();
    servletOutputStream.close();
    context.responseComplete();
    return "success";
    }
    faces-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <navigation-case>
       <from-action>#{activationController.creatContract}</from-action>
       <from-outcome>contractSaved</from-outcome>
       <to-view-id>/pages/contractSuccessfullyRegistred.xhtml</to-view-id>
      </navigation-case>
    Pouvez vous m'indiquer comment je dois faire?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    C'est le même problème qu'évoqué ici :
    http://www.developpez.net/forums/d10...elechargement/
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Par défaut
    J'ai trouvé une solution. j'ai supprimé la méthode viewContract() de la méthode creatContract(), et dans la page contractSuccessfullyRegistred.xhtml j'ai fait un appel à une méthode javascript grâce à onload, cette méthode fait le click sur un invsible button et ce dernier permet de générer l'état.
    ci-dessous les détails du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function submitViewContract(){
    window.document.getElementById('viewContract').click();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <body onload="submitViewContract()">
    <h:form>
    <table>
    <tr>
    <td>
    <p align="center"><strong>Mon message</strong></p>
    </td>
    </tr>
    <tr>					
    <td><h:commandButton value="" immediate="true" id="viewContract" style="display:none" action="#{activationController.viewContract}" /></td>
    </tr>
    </table>
    </h:form>
    </body>

Discussions similaires

  1. [C#][V2005Express] Générer des états
    Par Leesox dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/05/2006, 14h46
  2. Générer des fichiers à partir d'un état
    Par laurent35 dans le forum Access
    Réponses: 3
    Dernier message: 02/05/2006, 02h54
  3. [CR][VB] comment générer un état ?
    Par ndi dans le forum SDK
    Réponses: 3
    Dernier message: 22/08/2002, 13h13
  4. Réponses: 5
    Dernier message: 08/07/2002, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo