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

Struts 1 Java Discussion :

[Struts] Ouvrir dans une nouvelle fenêtre


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut [Struts] Ouvrir dans une nouvelle fenêtre
    Bonjour,

    J'ai un problème avec Struts lorsque je génère un document Excel à l'aide de JExcelAPI, je voudrais que l'Action qui génère le xls soit lancée dans une nouvelle fenêtre du navigateur, afin que si l'utilisateur clique sur ouvrir dans la boite de dialogue "Enregistrer sous", l'appli ne disparaisse pas, et qu'il n'ai pas à cliquer sur page précedente.

    J'ai donc un formulaire JSP qui permet de parametrer le rapport, celui ci est validé à la fois coté client et coté serveur, puis dans l'Action associée, je fais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return mapping.findForward("rapportAgentUnique");
    cela a pour effet de lancer l'Action qui génère le rapport et l'envoit au navigateur, ce qui fait apparaitre la boite de dialogue ouvrir ou enregistrer sous.

    Voici une partie du code de l'Action qui génère le xls :

    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
     
     response.setContentType("application/vnd.ms-excel");
            String nomFic ="rapport_gesam_"+agent.getNom()+"_"+agent.getPrenom()+".xls";
            response.setHeader("Content-Disposition", "inline; filename="+nomFic);
            response.setHeader("Content-Description", "Rapport géneré par l'application GESAM");
     
            ServletOutputStream out = response.getOutputStream();
     
    ......................
     
    // Envoi au navigateur et fermeture
            classeur.write();
            classeur.close();
     
            out.flush();
            out.close();
     
            System.gc();
    Voilà je ne sais pas du tout comment faire ni où...

    merci pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    tu peux peeux être mettre sur ta page d'origine un lien qui te dirige vers ton action. Tu mets dans ton lien un target a "_blank"
    ca donne quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="/actionExcel.do?" target="_blank">fichier excel</a>
    ou alors a la validation du formulaire (onsubmit()) tu ouvres en javascript une nouvelle fenetre vers ton action

    est ce que ces idées peuvent s'appliquer a ta page ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    le problème, c'est que ca doit être fait dans l'Action car en cas d'echec de validation coté serveur, la page qui est affichée avec les erreurs de Struts est dans une nouvelle fenêtre avec ta méthode.

    Pour le moment j'ai trouvé un truc qui me conviens, c'est à dire que je fais un force download dans le response.setHeader, ce qui fait que même si la personne clique sur ouvrir, le tableau excel est ouvert mais excel est lancé entièrement, et pas dans le navigateur.

    merci pour ta réponse en tout cas !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    je ne savais pas que l'on pouvait forcer le download comme ca. pourtant en chercha,t j'ai bien qu'il existait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("application/force-download")
    merci pour l'astuce

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    c'est clair que c'est pratique !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. target="_blank" pour ouvrir dans une nouvelle fenêtre ou dans un nouvel onglet?
    Par Marc22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/03/2010, 20h56
  2. Réponses: 3
    Dernier message: 07/01/2009, 18h23
  3. Bloquer les liens ou les ouvrir dans une nouvelle fenêtre
    Par Invité2 dans le forum Outlook Express / Windows Mail
    Réponses: 0
    Dernier message: 01/01/2009, 18h33
  4. [Débutant][HTML]Ouvrir le résultat d'un formulaire dans une nouvelle fenêtre
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/09/2006, 12h26
  5. Ouvrir un lien dans une nouvelle fenêtre
    Par Le Lézard dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/12/2004, 14h43

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