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 - conserver les données saisies dans un formulaire après un ré-affichage de la page ?


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut JSP - conserver les données saisies dans un formulaire après un ré-affichage de la page ?
    Bonjour à tous,

    C'est mon premier post ici, alors merci d'avance pour votre indulgence et bien sûr pour votre aide

    Je travaille sur la maintenance d'une application web dont l'architecture technique MVC struts et qui utilise des beans et des JSP (+ hibernate pour la persistance)

    Dans ce cadre, je mets en place un formulaire contenant une dizaine de champs texte.

    L'un des champs texte est associé est associé à un bouton "rechercher", réalisant une validation partielle du formulaire : L'utilisateur saisit un ID dans le champ texte, puis clique sur le bouton "rechercher". Ceci déclenche une action de recherche en base puis affiche le nom de l'élément si l'ID saisi existe ou un message d'avertissement dans le cas contraire.

    Enfin, le formulaire comporte un bouton de validation générale, destiner à créer et enregistrer une entité avec les éléments renseignés.

    Ma problématique est de conserver l'affichage des données déjà saisies par l'utilisateur, lorsque celui-ci clique sur le bouton "rechercher".

    Bien sûr, il est possible dans ma classe Action de récupérer puis de renvoyer explicitement la valeur de chaque champ saisi, comme ci-dessous pour les 2 champs comment et interloc:

    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
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
    	{
    		HttpSession session = SessionManager.getSession(request);
    		// log.info("session: "+session);
     
    		if (session == null)
    			return mapping.findForward("login");
     
    		ClientData user = (ClientData) session.getAttribute("ClientData");
     
    		ManagerServiceImpl service = new ManagerServiceImpl();
    		ValueObject vo = new ValueObject();
     
     
    		// --------------------------------------------------------------
    		// Récupération des paramètres HTTP
    		String numtel = request.getParameter("numtel");
    		String interloc= request.getParameter("interloc");
     
     // [...]
     
    		request.setAttribute("numtel", numtel);
    		request.setAttribute("interloc", interloc);
     
    		return mapping.findForward("success");
    }
    Mais cela me semble tellement peu élégant que ce n'est certainement pas comme ça qu'il faut faire


    De plus, dans le code que je maintiens, un des champs, nommé "comment" est bien réaffiché après un clic sur "rechercher", bien que je ne passe pas explicitement sa valeur à la requête via setAttribute, comme je le fais ci-dessus pour "numtel" et "interloc".

    Il y a donc visiblement un mécanisme "automatique" (je veux dire du framework) qui fonctionne avec ce champ comment, ce que je vois d'ailleurs au débugger, puisque je passe dans les getter/setter de comment via du code du framework)

    Pourtant, les 3 champs comment, numtel et interloc sont des attributs de mon bean et dotés des getters/setters adéquats. La différence entre eux se situe dans ma JSP et je suis sûre que c'est là que se situe mon problème, mais je ne connais pas suffisamment la syntaxe jsp pour le résoudre :

    D'abord, le code du champ "comment", qui se comporte bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr>
    	<td><%=labels.getString("detail.comment")%>:</td>
    	<td><html:textarea property="comment" cols="40" rows="3"
    			styleClass="width100">${comment}</html:textarea><br />
    	</td>
    </tr>
    Puis le code de interloc, par exemple, qui ne déclenche pas les setters/getters et qui donc est perdu lors de la validation partielle de ma page si je ne passe pas explicitment sa valeur à la requête comme je le fais ci-dessus ma méthode executeAction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
    	<td><%=labels.getString("workorder.my.interloc")%>:</td>
    	<td><input type="text" name="interloc"
    		value="${interloc}" /><br /></td>
    </tr>
    Voilà donc une longue question pour un point sûrement un peu bête , mais j'essaye d'être la plus claire possible...

    Comment devrais-je déclarer mon champ interloc dans la jsp afin qu'il ne soit pas reseté lors du réaffichage de la page qui suit le "rechercher" ?

    Grand merci d'avance pour vos lumières !

    J.

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Si quelque chose n'est pas clair, dites-le moi svp !

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Julie1987 Voir le message
    Si quelque chose n'est pas clair, dites-le moi svp !
    Faut-il croire que rien n'est clair ?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ton attribut "comment" est-il mis dans le scope session, contrairement à tes autres attributs qui doivent être dans le scope request ?

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Hmmm, ça ressemble à une bonne piste...

    Le scope est-il défini dans la jsp ? (désolée, question de noobs, mais je débute sur cette techno...)

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu peux jouer avec dans ta partie controleur, où tu as des objets de type HttpSession ou HttpServletRequest, comme dans le bout de code que tu nous montres.
    Donc soit tu utilises la session, mais il faut bien penser à vider la session des objets que tu n'utilises plus pour ne pas utiliser de la mémoire.
    Soit tu fais comme à présent en récupérant les objets d'une requête et en les transférant à l'autre.

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci c'est très clair, je vais essayer ça

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2010, 10h26
  2. Réponses: 3
    Dernier message: 05/09/2008, 07h41
  3. Recuperer les données saisie dans un formulaire
    Par hunzi dans le forum XMLRAD
    Réponses: 3
    Dernier message: 29/08/2006, 15h22
  4. Réponses: 8
    Dernier message: 19/05/2005, 16h03

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