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 :

[forward] Erreur lors de l'appel d'une méthode


Sujet :

Servlets/JSP Java

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 860
    Points : 4 819
    Points
    4 819
    Par défaut [forward] Erreur lors de l'appel d'une méthode
    Bonjour

    Dans une servlet, je crée un répertoire suivant un nom donné dans un formulaire. Seulement, cette servlet ne fonctionne pas. Voici le code puis l'erreur en question:
    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
     
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		String reponame = req.getParameter("reponame");
    		if(reponame.compareTo("")==0){
    			returnError("Your text field was void !", req, resp, "createrep.jsp");
    		}
     
    		if(reponame.compareTo("/")==0){
    			returnError("You can not create a repertory named \'/\' !", req, resp, "createrep.jsp");
    		}
     
    		Pattern p = Pattern.compile("(\\/{0,1}\\w)*");
    		Matcher m = p.matcher(reponame);
    		if(!m.matches()){
    			returnError("Your path is not well written !", req, resp, "createrep.jsp");
    		}
     
    		String filepath = repos+reponame;
    		File newrep = new File(filepath);
    		if(!newrep.mkdir()){
    			returnError("Can not create your repertory !", req, resp, "createrep.jsp");
    		}
    		else{
    			returnMessage("Repertory created successfully", req, resp, "createrep.jsp");
    		}
    	}
     
    	public void returnError(String error, HttpServletRequest req, HttpServletResponse resp, String page) throws ServletException, IOException{
    		req.setAttribute("error", error);
    		RequestDispatcher rd = req.getRequestDispatcher(page);
    		rd.forward(req, resp);
    	}
     
    	public void returnMessage(String message, HttpServletRequest req, HttpServletResponse resp, String page) throws ServletException, IOException{
    		req.setAttribute("ok", message);
    		RequestDispatcher rd = req.getRequestDispatcher(page);
    		rd.forward(req, resp);
    	}
    L'erreur se situe dans ma méthode returnError telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée
    	com.bioxpr.servlet.CreateDirectory.returnError(CreateDirectory.java:52)
    Tiens ?? Comment cela se fait ?
    Merci d'avance.

    @++

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    bonjour,

    suite à l'appel de rd.forward(req, resp); la reponse est commité.
    Donc si le traitement continu et appelle aussi un "rd.forward(req, resp);" erreur.

    le problème vient donc que les appel à "returnError(...)" ne terminent pas le traitement.

    ajoute des "return;" après
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(reponame.compareTo("")==0){
    	returnError("Your text field was void !", req, resp, "createrep.jsp");
    	return;
    }

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 860
    Points : 4 819
    Points
    4 819
    Par défaut
    Apparemment, il y avait aussi un petit problème de structure dans mon code. Ceci est résolu
    Merci aussi à toi fnobb

    @++

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

Discussions similaires

  1. [PHP 5.4] Erreur lors de l'appel d'une méthode dans une classe
    Par beegees dans le forum Langage
    Réponses: 8
    Dernier message: 25/01/2015, 13h20
  2. [Débutant] Erreur lors de l'appelle d'une méthode
    Par Hekinox dans le forum C#
    Réponses: 3
    Dernier message: 12/10/2011, 08h45
  3. Erreur lors de l'appel d'une méthode Zend Helper
    Par donbrico dans le forum Zend Framework
    Réponses: 4
    Dernier message: 16/04/2008, 15h52
  4. Erreur lors de l'appel d'une page executée avec AJAX
    Par jt-tronix dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2006, 17h56
  5. Erreur lors de l'appel d'une DLL créée avec Visual
    Par WELCOMSMAIL dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/09/2006, 15h53

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