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

Servlets/JSP Java Discussion :

[JSP]Cannot forward after response has been committed


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Par défaut [JSP]Cannot forward after response has been committed
    Bonjour

    Mon objectif: récupérer le code HTML généré par un fichier JSP, et ce, pour plusieurs fichier JSP.

    Je me suis donc basée sur un bout de code donné sur cette discussion .

    J'arrive parfaitement à récuperer mon code pour un fichier, amis lorsque j'exécute ce code plusieurs fois (pour différents fichiers), j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cannot forward after response has been committed.
    Est-ce que quelqu'un a déjà eu ce problème? Comment est-ce qu'on le résoud?

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Cela signifie que tu essaies de faire un forward alors que la réponse a déjà été envoyée.

    Tu dois avoir un forward en trop dans ta servlet.

    Si tu ne trouves pas, montre-nous le code concerné.

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Par défaut
    Oui je sais, je fais 2 fois un forward, mais c'est voulu.
    La page que j'appelle prend des paramètres et ce que je veux c'est le résultat obtenu en fonction de 2 jeux de valeurs différents pour ces paramètres, d'où mes 2 forwards.

    Y-a-t-il un moyen de faire un seul forward et récupérer les 2 résultats HTML ?

  4. #4
    Membre averti
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Par défaut
    Personne n'aurait une idée s'il vous plaît?

  5. #5
    Membre confirmé Avatar de java_fun
    Inscrit en
    Novembre 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 117
    Par défaut
    Bonjour c sera plus facile avec le code

  6. #6
    zag
    zag est déconnecté
    Membre éclairé

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    Bonjour,

    tiens je crois que je connais ce code .

    Personnellement je n'ai jamais eu ce problème, mais vu l'exception je dirai que tu dois surement ecrire dans response.getOutputStream() avant de faire le forward qui génère cette exception.

    Enfin, de toute manière ca serait mieux si tu pouvais mettre ton code

  7. #7
    Membre averti
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Par défaut
    Bon d'accord, voici mon code. C'est un peu comliqué mais j'espère que ça pourra vous donner quelques idees:

    Ma fonction principale:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    //*******************************************************************
    //* Fonction:   exportInvitationFiles
    //* Usage:      Copie de tous les fichiers necessaires pour acceder à l'invitation sur le serveur externe
    //* Paramètres: String    : le type de document (Invitation, Reminder, Newsletter, RSVP, Form)
    //*             String    : la cle primaire de l'objet
    //*             String    : la langue dans laquelle les fichiers doivent être copiés (fr, en ou bi si dans les 2 langues)
    //* Retour:     aucun
    //*******************************************************************
    public void exportInvitationFiles(
            Statement sqlConnexionRSVP,
            String strFolderPath,
            String strInvitationKey,
            String strDocLanguage,
            HttpServletRequest request,
            HttpServletResponse response,
            String strUser) throws Exception {
     
        if(strDocLanguage.equals("bi")){
            exportInvitationFiles(sqlConnexionRSVP, strFolderPath, strInvitationKey, "fr", request, response, strUser);
            exportInvitationFiles(sqlConnexionRSVP, strFolderPath, strInvitationKey, "en", request, response, strUser);
        }else{
            String strImagePrefix = buildImagePrefix("Invitation", strInvitationKey);
            String[] strImageInfo;
     
    //Export du repertoire du template choisi pour cette invitation
            String strTemplate = getInvitationTemplate(sqlConnexionRSVP, strInvitationKey);
     
            copyFolder(FileAddress+TemplateCssAddress+strTemplate, strFolderPath+"\\"+TemplateCssAddressInWebSite);
     
    //Export de toutes les images uploadees pour cette invitation
            Hashtable htbImages = getInvitationImages(sqlConnexionRSVP, strInvitationKey);
            Iterator it = htbImages.keySet().iterator();
     
            while (it.hasNext()) {
                strImageInfo = (String[])htbImages.get((String)it.next());
                copyFile(FileAddress+UploadedFileAddress+strImagePrefix+strImageInfo[1], strFolderPath+"\\"+ImagesAddressInWebSite+strImagePrefix+strImageInfo[1]);
            }
     
    //Export du document
            BufferedWriter bwOut = new BufferedWriter(new FileWriter(strFolderPath+"\\"+InvitationFileName));
            bwOut.write(getGeneratedSourceFromJsp(request, response, "/preview.jsp?previewLanguage="+strDocLanguage+"&objectType=Invitation&objectKey="+strInvitationKey));
            bwOut.close();
        }
    }
    Et ma fonction de récupération du code html généré par du jsp (repris d'un code offert dans ce forum):
    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
    //*******************************************************************
    //* Fonction:   getGeneratedSourceFromJsp
    //* Usage:      Recuperer le code source genere par une page JSP
    //* Paramètres: HttpServletRequest  : request
    //*             HttpServletResponse : response
    //*             String              : adresse relative à la racine du projet de la page JSP (doit commencer par un '/')
    //* Retour:     String : Le code html genere
    //*******************************************************************
    public String getGeneratedSourceFromJsp(
            HttpServletRequest request,
            HttpServletResponse response,
            String strPage) throws Exception{
     
        HttpServletResponse newResponse = new FictiveHttpServletResponse(response);
     
        ServletContext sc = getServletContext();
        RequestDispatcher rd = sc.getRequestDispatcher(strPage);
     
        rd.forward(request, newResponse);
     
    // Récuperation du code html genere par la page
        return newResponse.toString();
    }
    Voilà, si vous avez besoin d'autres informations, n'hésitez pas! Et merci d'avance!! :-)

  8. #8
    zag
    zag est déconnecté
    Membre éclairé

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    slt,

    désolé je n'avais pas vu que tu avais posté ton code.
    Tu as trouvé une solution?
    Sinon peux tu poster preview.jsp, parce que dans le code que tu as mis je ne vois en effet rien pouvant justifier cette exception.

    Peut etre as tu un jsp:forward ou un response.sendRedirect ... dans ta jsp qui pourrait créer cette erreur?

  9. #9
    Membre averti
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Par défaut
    Désolée, je n'arrive pas à poster le code de ma page preview.jsp
    Est-ce que quelqu'un pourrait m'aider s'il vous plaît?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Par défaut
    Salut,

    Si tu veux récupérer le code html généré par une jsp, tu fais une requête HTTP qui appelle ta jsp !

    Tu trouveras ici une librairie qui te facilitera la tâche :

    http://jakarta.apache.org/commons/httpclient/

    @+

    derek.mf

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/12/2011, 18h00
  2. Erreur "Cannot create a session after the response has been committed"
    Par aurelientp dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 07/12/2011, 11h14
  3. Réponses: 0
    Dernier message: 06/05/2011, 10h56
  4. Réponses: 2
    Dernier message: 09/10/2010, 17h10
  5. Classe JDialog + cannot reference parent before supertype constructor has been called
    Par une_tite_question dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 08/04/2008, 15h51

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