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 1.3] <layout:select> et DownloadAction


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut [Struts 1.3] <layout:select> et DownloadAction
    Hello les gens,
    J'ai un combo box sur ma jsp sur lequel figurent un certain nombre de type de fichiers disponibles pour téléchargement. Un bouton permet de lancer le téléchargement du fichier selectionné.
    Je comptais utiliser sur mon bouton une action étendant la classe DownloadAction et utiliser sa méthode héritée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    protected StreamInfo getStreamInfo(
    		ActionMapping mapping,
    		ActionForm form,
    		HttpServletRequest request,
    		HttpServletResponse response)
    		throws Exception {}
    Mais pour avoir le nom du fichier a télécharger il me faut submiter mon form qui lui est lié à une action étendant la classe DispatchAction
    La solution qui me viens à l'ésprit serait de submiter mon form sur le "onchange" du select de ma nière à toujours avoir sur mon form le bon nom de fichier à télécharger, mais c'est assez "cheap" comme solution
    Vous en voyez d'autres ?

    Merci pour toutes vos contributions.

  2. #2
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    J'ai trouvé une solution mais je ne sais pas si c'est très élégant. En fait je n'utilise plus DownloadAction et sa méthode getStreamInfo()
    je transforme le fichier destiné au téléchargement en un tableau de byte puis "j'enrichi" la réponse avec:
    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
    public static void downloadFile(HttpServletResponse response, File file)
    		throws IOException {
     
    		response.addHeader(
    			"Content-disposition",
    			"attachment;filename=rapport.xlsx");
    		response.setContentType(ConstantsProjet.FILE_TYPE_MSEXCEL);
    		response.setContentLength(new Long(file.length()).intValue());
    		response.getOutputStream().write(
    			FileOperation.getArrayByteFromFile(file),
    			0,
    			new Long(file.length()).intValue());
    		response.getOutputStream().flush();
    		response.getOutputStream().close();
     
    	}
    J'ai tout de même une exception sur le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.getOutputStream().close();
    C'est la bonne méthode ?

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je résume ce que j'ai compris du besoin :

    - tu as une page de sélection de types de fichiers
    - tu as un bouton de download qui permet de télécharger tous les fichiers correspondants au type sélectionné

    Tes fichiers arrivent en 1 fois ou 1 à 1 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    de télécharger tous les fichiers correspondants
    Chaque type est un unique fichier. Je ne télécharge donc qu'un fichier à la fois.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour moi, la méthode que tu exposes est bonne...

    Je suggère juste de passer par une <iframe> pour effectuer le téléchargement afin d'éviter (éventuellement) la page blanche au retour de la servlet (mais c'est un détail)

    Pour l'erreur sur le close(), il faudrait la trace...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    L'exception a disparu je n'arrive plus à la reproduire...
    afin d'éviter (éventuellement) la page blanche au retour de la servlet
    Je retourne null à la fin de mon traitement et je n'ai pas de page blanche

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

Discussions similaires

  1. [Struts-Layout] utilisation du <layout:select>
    Par j_esti dans le forum Struts 1
    Réponses: 8
    Dernier message: 13/06/2008, 14h17
  2. Réponses: 1
    Dernier message: 22/04/2008, 14h00
  3. Réponses: 14
    Dernier message: 08/04/2008, 21h05
  4. [Struts-Layout] Layout:select
    Par bags1509 dans le forum Struts 1
    Réponses: 8
    Dernier message: 22/02/2008, 15h42
  5. Réponses: 6
    Dernier message: 27/03/2006, 19h11

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