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

Struts 1 Java Discussion :

ActionForm pb reset


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 45
    Par défaut ActionForm pb reset
    Bonjour,

    Je rencontre un problème sur l'utilisation du reset dans une ActionForm:
    J'ai un tableau (displayTag) qui me liste des utilisateurs. Sur chaque ligne, grâce à un wrapper, j'ai un lien (html:link) qui pointe vers une action me permettant d'afficher le formulaire de modification de cet utilisateur. Dans le reset du form associé à cette action, j'initialise un html:select.

    Mon problème: quand je clique sur le lien me permettant de modifier le premier utilisateur, pas de soucis, le reset s'exécute correctement, le formulaire s'affiche avec les bonnes valeurs. En revanche, quand je reviens vers mon tableau (via un menu), et que je clique sur un autre utilisateur, le reset n'est plus exécuté et ma page s'affiche avec les mauvaises données...

    Je travaille en scope request, et après lecture du fofo j'ai essayé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.setHeader("pragma","no-cache");
    response.setHeader("cache-control","no-cache");
    sans succès.

    Avez-vous des suggestions ?
    Merci.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quand tu reviens vers ta page, tu utilises quelle commande dans ton menu ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 45
    Par défaut
    Une action également qui me renvoie à une page avant l'affichage du tableau.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Dans le principe même de struts, c'est la première méthode appelée dans le cycle...
    Peux-tu montrer :
    le struts-config.xml
    le code de l'actionForm qui coince
    le code de l'action qui appelle
    le code de la page à afficher
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Février 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 45
    Par défaut
    struts-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	<form-beans>    		
    ...
    		<form-bean name="modifierUtilisateurForm" type="com.test.bo.form.ModifierUtilisateurForm"/>
    ...
    	</form-beans>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <action-mappings>
    ...
    <action path="/goModifierUtilisateur" type="com.test.bo.action.GoModifierUtilisateurAction" name="modifierUtilisateurForm" scope="request">
    			<forward name="ok" path="/modifierUtilisateur.jsp"/>			
    		</action>
    ...
    </action-mappings>
    La méthode reset du form:

    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
     
    public void reset(ActionMapping mapping, HttpServletRequest request) {
    		System.out.println("*******************RESET*******************"+ModifierUtilisateurForm.class);
     
    		Utilisateur utilisateur = (Utilisateur)request.getAttribute("utilisateurAModifier");
    		if(utilisateur!=null){
    			System.out.println("user: "+utilisateur.getIdentifiant());
    			if(utilisateur.getCategories()!=null)
    			{
    				String tab[] = new String[utilisateur.getCategories().size()];
    				Iterator itCategories = utilisateur.getCategories().iterator(); 
    				int i=0;
    				while(itCategories.hasNext())
    				{			
    					Categorie tmp = (Categorie)itCategories.next();
    					tab[i]=String.valueOf(tmp.getId());
    					i++;
    				}
    				setCategories(tab);
    			}
    		}
    		else
    		{
    			System.out.println("pas de user dans la requete");
    		}
    	}
    L'action:

    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
     
    		System.out.println("*******************ACTION*******************"+GoModifierUtilisateurAction.class);
     
    		//---> Recuperation du contexte & des daos
    		ApplicationContext context = getWebApplicationContext();
    		utilisateurDao = (UtilisateurDao)context.getBean("utilisateurDao");
    		categorieDao = (CategorieDao)context.getBean("categorieDao");
    		notificationDao = (NotificationDao)context.getBean("notificationDao");
     
    		//---> Recuperation de l'id utilisateur a modifier
    		int id = Integer.valueOf(request.getParameter("id"));
    		System.out.println("Appel de "+GoModifierUtilisateurAction.class+" avec l'id -- "+id);
     
    		//---> Recuperation de l'utilisateur a modifier
    		Utilisateur utilisateur = utilisateurDao.getById(id);
    		System.out.println("Recuperation de l'utilisateur -- "+utilisateur.getIdentifiant());
     
    		request.setAttribute("utilisateurAModifier", utilisateur);
     
    		//---> On recupere la liste des categories & des notifications
    		List listeCategories = categorieDao.getAll();
    		List listeNotifications = notificationDao.getAll();
     
    		request.setAttribute("listeCategories",listeCategories);
    		request.setAttribute("listeNotifications",listeNotifications);	
     
     
    		return mapping.findForward("ok");
    formulaire de la page à afficher:

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <html:form action="modifierUtilisateur.do" name="modifierUtilisateurForm" type="com.test.bo.form.ModifierUtilisateurForm">
    <html:hidden name="utilisateurAModifier" property="idUtilisateur"/> 
      <table width="45%" border="0">
      	<tr><td>
      		<table> 
    		 	<tr> 
    				 <td class="intitule" align="right">
    				 	<font color="#003399" size="2"><b>Identifiant: </b></font>
    				 </td>
    				 <td>
    				 	<html:text name="utilisateurAModifier" property="identifiant"/>
    				 </td>
    		 	</tr> 
    		 	<tr> 
    		 		<td class="intitule" align="right" >
    		 			<font color="#003399" size="2"><b>Mot de passe: </b></font>
    		 		</td> 
    		 		<td>
    		 			<html:text name="utilisateurAModifier" property="mdp" />
    		 		</td>
    		 	</tr>
    		 	<tr> 
    		 		<td class="intitule" align="right" >
    		 			<font color="#003399" size="2"><b>Role: </b></font>
    		 		</td>
    		 		<td>
    		 			<html:select name="utilisateurAModifier" property="role">
    		 				<html:option value="teleconseiller">teleconseiller</html:option>
    		 				<html:option value="manager">manager</html:option>
    		 				<html:option value="administrateur">administrateur</html:option>
    		 			</html:select>
    		 		</td> 
    		 	</tr>
    		 	<tr> 
    		 		<td class="intitule" align="right" >
    		 			<font color="#003399" size="2"><b>Niveau: </b></font>
    		 		</td>
    		 		<td>
    		 			<html:select name="utilisateurAModifier" property="niveau">
    		 				<html:option value="1">1</html:option>
    		 				<html:option value="2">2</html:option>
    		 				<html:option value="3">3</html:option>
    		 			</html:select>
    		 		</td> 
    		 	</tr>
    		 	<tr> 
    		 		<td class="intitule" align="right" >
    		 			<font color="#003399" size="2"><b>Categories: </b></font>
    		 		</td>
    		 		<td>
    		 			<html:select property="categories" multiple="true">
    		 				<html:options collection="listeCategories" property="id" labelProperty="libelle" />
     					</html:select>
    		 		</td> 
    		 	</tr>
    		 	<tr>
    		 		<td align="center">
    		 			<html:link href="goAdmin.do">Retour</html:link>
    		 		</td>
    		 		<td align="center" >
    		 			<html:submit property="submit">Modifier</html:submit>
    		 		</td>
    		 	</tr> 
     
     
    		</table>                   
    	</td></tr>
      </table>
    </html:form>

  6. #6
    Membre averti
    Inscrit en
    Février 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 45
    Par défaut
    Re bonjour,

    En cherchant un peu et en utilisant un exemple bidon j'ai pu me rendre compte que ma méthode reset n'est appelée que pour la première exécution de ma page.

    En gros:
    Une action X appelle une page 1. Cette page 1 est liée à un formulaire.
    En plaçant des logs, à la première exécution je vois bien l'execute de mon action suivi du reset de mon form. Ma page s'affiche.
    Ensuite, en rappelant l'action X, j'ai bien l'execute de l'action mais plus le reset du form

    Il y a-t-il un cache ou quelque chose dans ce goût là à supprimer ?

Discussions similaires

  1. Action et méthode reset d'un bean ActionForm
    Par raj dans le forum Struts 1
    Réponses: 5
    Dernier message: 15/05/2007, 17h59
  2. [Struts] reset dans une ActionForm avec des int
    Par mariemor64 dans le forum Struts 1
    Réponses: 19
    Dernier message: 18/05/2006, 12h47
  3. Struts actionform reset
    Par zizou771 dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/05/2006, 14h34
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49
  5. [Struts]ActionForm & reset
    Par djoukit dans le forum Struts 1
    Réponses: 6
    Dernier message: 23/03/2004, 10h07

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