[JAVA/JSP] Formulaire JSP/Servlet - Conservations de données [Resolu]

Formulaire JSP/Servlet - Conservations de données [Resolu] [JAVA/JSP] - Java - Programmation

Marsh Posté le 18-01-2007 à 17:50:30    

Bonjour à tous,
 
Il y a beaucoup de sujets sur les formulaires mais je n’ai pas trouvé la réponse à mon problème (j’espère ne pas être passé au travers).
 
Je dispose d’un formulaire avec des textarea/radio/text… défini dans une page JSP (avec un Bean en scope session). Je passe par une Servlet pour la récupération des données (méthodes doGet/doPost).
 
L’enregistrement, la gestion d’erreurs de saisies, l’affichage des messages d’erreurs, l’affichage de tous les enregistrements sous forme de tableau (dans la même page), la suppression… fonctionnent parfaitement.
 
Petit problème (qui en est un grand pour moi  :(  ) :
Lorsque je valide mon formulaire et qu’il y une ou plusieurs erreurs, les messages d’erreurs s’affichent mais mon formulaire est réinitialisé.
 
Je souhaiterais que mon formulaire conserve les données saisies avant la soumission (afin naturellement d’éviter les ressaisies et n’avoir uniquement que les mauvais champs à corriger).
Comment dois-je m’y prendre ?  :??:  
 
Voilà quelques bout de code que j’utilise :

Code :
  1. ///// Dans la JSP : /////  
  2. <p>
  3. Nom : <input type="text" name="nom" value="<%=votreNom%>" title="Saisissez votre nom">
  4. Pr&eacute;nom : <input type="text" name="prenom" value="<%=votrePrenom%>" title="Saisissez votre pr&eacute;nom">
  5. …
  6. </p>


 

Code :
  1. ///// Dans la Servlet : /////  
  2. // récupération des données du formulaire de la request
  3. request.getParameter("nom" )
  4. request.getParameter("prenom" )
  5. ...
  6. // Utilisation d’une liste ‘profil’ qui contient tous les éléments d’un profil (nom, prenom, sexe,age, …)
  7. profil.setNom(request.getParameter("nom" ))
  8. profil.setPrenom(request.getParameter("prenom" ))
  9. …
  10. // Utilisation d’une liste ‘listeErreurs’ qui contient tous les messages d’erreurs à afficher
  11. listeErreurs.add(" Le nom n'est pas renseigné " );
  12. listeErreurs.add(" Le prénom n'est pas renseigné " );
  13. ...
  14. // Retour à la page JSP après validation du formulaire ou suppression d’un profil du tableau
  15. RequestDispatcher rd = getServletContext().getRequestDispatcher("/jsp/formulaire1.jsp" );
  16. rd.forward(request, response);


 
Je vous remercie tous d'avance pour les nombreux futurs postes  :sarcastic:


Message édité par Profil supprimé le 08-02-2007 à 11:48:35
Reply

Marsh Posté le 18-01-2007 à 17:50:30   

Reply

Marsh Posté le 18-01-2007 à 18:16:34    

Si ton Bean est en scope session, tu dois le réutiliser dans ta jsp

Code :
  1. <input type="text" name="nom" value="<%=profil.getNom()%>" title="Saisissez votre nom">


ou mieux
 

Code :
  1. <input type="text" name="nom" value="${profil.nom}" title="Saisissez votre nom">

Reply

Marsh Posté le 18-01-2007 à 19:04:21    

Merci pour l'astuce mais je dois mal m'y prendre, j'avais déjà essayé de faire de cette manière :
 
 

Code :
  1. // Mon Bean
  2. <jsp:useBean id="useBeanListeFormulaire1" class="com.test.javabean.ListeFormulaire1JavaBean" scope="session" />


 

Code :
  1. <p>
  2. <%
  3. if (session.getAttribute("useBeanListeFormulaire1" ) != null) {
  4. ListeFormulaire1JavaBean profil = (ListeFormulaire1JavaBean) session.getAttribute("useBeanListeFormulaire1" );
  5. }
  6. %>
  7. Nom :   <input type="text" name="nom" value="<%=profil.getNom()%>" >
  8. </p>


 
Dois y avoir une erreur dans ce que j'ai écrit au dessus mais je ne vois pas ...  :sweat:

Reply

Marsh Posté le 19-01-2007 à 11:01:58    

Il y a beaucoup de bonne pratique à revoir.
Sinon il y a un framework un peu dinosaure nommé struts qui te mache le boulot dans ton cas.
 
Es tu sur dans ta servlet de correctement mettre à jour tes elts, ç à d que chaque instance créée de Profil est reellement rajouter à ton "ListeFormulaireJavaBean"  qui lui même est correctement mis en session.

Reply

Marsh Posté le 24-01-2007 à 12:06:57    

Je voulais juste clore ce sujet en y apportant une réponse pour ceux à qui cela pourrait servir  ;)  
J'ai résolu mon problème de la manière suivante :
 

Code :
  1. // Dans la JSP, utilisation d'un Bean 'dernierProfilBean' qui contient les informations saisie dans le formulaire
  2. <p>
  3. // Rq : ProfilBean.java contient les setters et getters
  4.       <%
  5. ProfilBean dernierProfil = (ProfilBean)request.getAttribute("dernierProfilBean" );
  6.       %>
  7. Nom : <input type="text" name="nom" title="Saisissez votre nom" value="<%=dernierProfil !=null ? dernierProfil.getNom() : "" %>" >
  8. Pr&eacute;nom : <input type="text" name="prenom" title="Saisissez votre prénom" value="<%=dernierProfil !=null ? dernierProfil.getPrenom() : "" %>">
  9. </p>


Code :
  1. // Dans la Servlet
  2. ...
  3. // Rq: 'profil' est un objet ProfilBean sur lequel on a effectué les setters auparavant (profil.setNom(...), ...)
  4. request.setAttribute("dernierProfilBean", profil);
  5. ...


 
Voilà, merci pour les réponses qui m'ont mis le doigt sur mon problème. Ciaoo  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed