Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JSP] Erreur 404

Retour sur une même page impossible

Sujet résolu
    13 avril 2012 à 12:40:17

    Bonjour à tous. :)
    Je vous expose mon problème. J'ai un formulaire dans un fichier search.jsp, qui lance un servlet. Dans ce servlet, je vérifie que les champs de mon formulaire sont bien remplis avant d'effectuer une action. Voici mon code :
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    	{
    		String name = (String)request.getParameter("nom").replaceAll(" ", "");
    		String firstname = (String)request.getParameter("prenom").replaceAll(" ", "");
    		String id = (String)request.getParameter("id").replaceAll(" ", "");
    		if (name=="" && firstname=="" && id=="")
    		{
    			request.setAttribute("redirectionPage", "pages/search.jsp");
    			request.setAttribute("errorMessage", "Le lancement de la recherche nécessite de renseigner au moins l'un des champs du formulaire!");
    			request.getRequestDispatcher("error.jsp").forward(request, response);
    			
    			
    		}
    		else
    		{
    			request.setAttribute("query", buildQuery(request));
    			request.getRequestDispatcher("pages/searchResults.jsp").forward(request, response);
    		}
    

    Le fichier error.jsp possède dans son contenu la ligne suivante :
    <p><%=request.getAttribute("errorMessage") %> Veuillez recommencez en cliquant sur <a href=<%=request.getAttribute("redirectionPage") %>>ce lien</a>.</p>
    

    Lorsque je remplis mes champs correctement, le fichier searchResults.jsp est bien lancé, de même que le fichier error.jsp se lance lorsque je ne rempli pas mes champs.
    La prmière fois en cas d'erreur, mon application retourne bien sur mon search.jsp. Seulement, lorsque je fait deux fois la même chose, à savoir dans ce cas valider deux fois mon formulaire (search.jsp -> servlet) avec les champs vides, la deuxième fois quand l'application tente de revenir sur search.jsp, j'obtiens le message "ERREUR 404". :waw:

    Quelqu'un pourrait-il m'éclairer sur ce qui se passe ? Ai-je loupé un concept du JSP ?
    Merci pour votre aide.


    Petite précision, j'ai trouvé la source de mon erreur :
    - Mes pages sont stockées dans un répertoire "pages".
    - Lorsque j'appelle pour la première fois mon servlet en validant mon formulaire vide, j'obtiens l'URL suivante .../search.do
    - Au retour vers le formulaire j'ai ceci: .../pages/search.jsp
    - Au second appel j'obtiens : .../pages/search.do au lieu de .../search.do !!!!! Et donc évidemment erreur 404.
    Je n'ai aucune idée de comment corriger cela, des pistes ?
    • Partager sur Facebook
    • Partager sur Twitter
      13 avril 2012 à 17:49:47

      Une URL absolue dans le champ action du formulaire ? Typiquement, un truc du genre /search.do à la place de search.do ?
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2012 à 9:22:15

        Merci Coyote pour ton aide. ;)
        J'ai bien une URL au chemin relatif dans mon formulaire :
        <form name="searchForm" method="post" action="search.do">
        

        J'ai cru comprendre (suite au tuto JSP du site) qu'il ne fallait mettre des chemins absolus uniquement dans le web.xml notamment concernant les welcom-files et les error-pages ?

        Pour l'instant j'ai contourné le problème en mettant tous mes fichiers JSP à la racine de mon projet, ce que je ne trouve pas "propre".

        Merci!
        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2012 à 10:03:47

          La balise <c:url value="" /> de la JSTL permet justement de s'affranchir de ce problème en rapportant l'URL absolue qu'elle contient au contexte de déploiement du projet.

          Typiquement, une URL absolue du genre /rep/page deviendrait en passant par cette balise /contexte/rep/page.
          • Partager sur Facebook
          • Partager sur Twitter

          [JSP] Erreur 404

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown