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 :

Effectuer deux actions


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut Effectuer deux actions
    Bonjour à tous,

    Suite à mon post d'hier où j'ai fais un monologue , me revoici avec deux questions qui sont liées.

    Comme je le disais hier, mon but est de lancer la génération de deux fichiers TXT par sélection dans mon tableau et de les envoyer au client.

    J'arrive à envoyer un fichier mais pas plus...
    Voici le code utilisé pour envoyé le fichier (celui de la faq) :

    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
    22
    23
    24
     
    public void openTxt(File txtFile, HttpServletResponse res) {
    		String filename = txtFile.getName();
    		res.setContentType("multipart/zip"); 
    		res.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\";"); 
    		res.setContentLength((int)txtFile.length()); 
     
    		try {
    			OutputStream os = res.getOutputStream();
    			FileInputStream stream = new FileInputStream(txtFile);
    			BufferedInputStream  bis = new BufferedInputStream(stream);
    			InputStream is = new BufferedInputStream(bis);
    			int count;
    			byte buf[] = new byte[4096];
    			while ((count = is.read(buf)) > -1)
    			{
    				os.write(buf, 0, count);
    			}
    			is.close();
    			os.close();
    		} catch (Exception ex) { 
    			ex.printStackTrace();
    		}
    	}
    et mon action :

    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 ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest req, HttpServletResponse res) throws Exception {
    		DynaValidatorForm monForm = (DynaValidatorForm)form;
     
    		File fileEcritures = null;
    		File fileComptes = null;
    		try {
    			fileEcritures = FileManager.getInstance().genererEcritures();
    			// Ouvre le fichier txt
    			ExportUtilities.getInstance().openTxt(fileEcritures, res);
     
    			fileComptes = FileManager.getInstance().genererComptes();
    			// Ouvre le fichier txt
    			ExportUtilities.getInstance().openTxt(fileComptes, res);
    		} catch(Exception exc) {
    			logger.error(exc.getMessage(), exc);
    		}
     
    		return null;
    	}

    Mes deux problèmes sont donc :
    - Comment envoyer plusieurs fichiers (en même temps) à un client ? Si une solution facile à mettre en oeuvre est de faire un zip c'est possible...
    - Comment effectuer une autre action après avoir effectuer cet envoi ? Ou dois je effectuer l'action avant l'envoi ?

    Merci de votre aide car là je déprime un peu

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    d'ailleurs dans la FAQ il est dit qu'on peut réaliser un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return mapping.findforward("fichieenvoye");
    une fois le fichier envoyé mais cela me génére une exception parceque je pense que le flux de réponse a été utilisé pour envoyer le fichier :

    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
    22
    23
    24
    25
    26
    27
    25 juin 2009 14:08:52 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet action a g�n�r� une exception
    java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) apr�s que la r�ponse ait �t� envoy�e
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:312)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1083)
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:396)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Unknown Source)

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    bon ça n'a pas l'air d'inspirer mon problème

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    allez j'ai contourné mon souci en rajoutant dans le tableau deux icones permettant de générer les txt en cliquant dessus
    je peux alors utiliser mon action pour faire le traitement que je souhaite !!!

    mais si un jour quelqu'un peut m'expliquer comment faire (ce que je décris en haut), ça m'intéresse

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/03/2014, 20h09
  2. Mettre deux actions sur un onClick
    Par budiste dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 16/11/2005, 17h17
  3. [Conception] Tester quel bouton a effectué l'action
    Par Cyborg289 dans le forum Général Java
    Réponses: 6
    Dernier message: 08/07/2005, 00h50
  4. utiliser "if" pour faire deux actions differente
    Par vampyer972 dans le forum C
    Réponses: 2
    Dernier message: 09/05/2004, 11h12
  5. [GNU Pascal] [GRX] Effectuer des actions pendant un temps d'arrêt (GRSleep)
    Par the_guitariste dans le forum Autres IDE
    Réponses: 3
    Dernier message: 03/04/2004, 19h21

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