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 :

Initialiser un action form dans un iterate


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Initialiser un action form dans un iterate
    Bonjour,

    j'ai un petit soucis pour initialiser X fois (avec une valeur qui n'est pas forcément la même à chaque fois) un champ de mon ActionForm.
    En gros ici, une entité est composé de domaines.

    Voici mon ActionForm:
    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 class UpdateDomaineActionForm extends ValidatorForm {
     
        private Integer dom_codeId;
        private String dom_nom;
        private Integer dom_enti_codeId;
     
        public Integer getDom_codeId () {
            return dom_codeId;
        }
        public void setDom_codeId (Integer dom_codeId) {
            this.dom_codeId = dom_codeId;
        }
        public Integer getDom_enti_codeId () {
            return dom_enti_codeId;
        }
        public void setDom_enti_codeId (Integer dom_enti_codeId) {
            this.dom_enti_codeId = dom_enti_codeId;
        }
        public String getDom_nom () {
            return dom_nom;
        }
        public void setDom_nom (String dom_nom) {
            this.dom_nom = dom_nom;
        }
     
    }
    Ma JSP:
    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
     
    <logic:iterate name="domaines" id="domaine">
    <tr>
    <html:form action="/updateDomaine">
    <html:hidden name="domaine" property="dom_codeId" />			
    	......
    	<td class="td_ligne">
    		<html:select property="dom_enti_codeId"  style="width: 300;">
    		<html:optionsCollection name="entites" label="entite_nom" value="entite_codeId" />
    		</html:select>
    	</td>
    	......
    </html:form>
    </tr>
    </logic:iterate>
    Et mon action qui mets les données en request pour afficher ma JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                request.setAttribute("entites", IEntites.getAllEntites());
                request.setAttribute("domaines", IDomaines.getAllDomaines());
    Donc mon problème se situe pour initialiser le html:select sur une valeur du html:options. L'initialisation doit se faire par rapport à la valeur en BDD sur le champ dom_enti_codeId.

    J'ai réussi à l'initialiser en faisant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:select name="domaine" property="dom_enti_codeId.enti_codeId"  style="width: 300;">
    Mais après cette modif je ne sais pas comment modifier le action form en conséquence pour récupérer la valeur a la soumission du formulaire (j'ai essayé dom_enti_codeId et enti_codeId mais ça ne fonctionne pas, ça me renvoie null).

    Rectification : ceci fonctionnait lorsque je n'utilisais pas mon propre actionform mais le DynaActionForm de base. Avec mon propre actionform, ça ne fonctionne plus.

    Dans d'autres parties de ma webapp, quand j'affiche seulement 1 seul élément (donc sans liste et sans iterate), j'initialise mon action form grâce à ceci dans l'action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NomActionForm formulaire = (NomActionForm) form;
    formulaire.setDom_enti_codeId(id correspondant à l'entité parente);
    Existe t-il une façon de faire similaire pour une liste ?

  2. #2
    Membre habitué
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Points : 143
    Points
    143
    Par défaut
    peux ton voir ton source JSP dans son ensemble stp?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Bien sûr

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <%@ page language="java"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
     
    <html>
    <head>
    	<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE" /> 
    	<META HTTP-EQUIV="EXPIRES" CONTENT="-1" />
    	<link href="<%=request.getContextPath()%>/css/page_centrale.css" rel="stylesheet" type="text/css" />
    </head>
    <body >
     
    <center class="index_error">
    	<html:errors/>
    </center>
     
    		<table cellpadding="1" cellspacing="1" class="list_utilisateurs">
    			<tr>
    				<td class="td_titre_cadre_info" colspan="4">
    					Gestion des domaines
    				</td>
    			</tr>
    			<tr >
    				<td class="td_soustitre" width="300">Nom</td>
    				<td class="td_soustitre" width="225">Entité dappartenance</td>
    				<td class="td_soustitre">Update</td>
    				<td class="td_soustitre">Supprimer</td>
    			</tr>			
    			<logic:iterate name="domaines" id="domaine">
    			<tr>
    				<html:form action="/updateDomaine">
    				<html:hidden name="domaine" property="dom_codeId" />			
    				<td class="td_ligne">
    					<html:text name="domaine" property="dom_nom" size="45" />
    				</td>
    				<td class="td_ligne">
    					<html:select property="dom_enti_codeId"  style="width: 300;">
    						<html:optionsCollection name="entites" label="entite_nom" value="entite_codeId" />
    					</html:select>
    				</td>
    				<td class="td_ligne" style="vertical-align: middle;">					
    					<html:submit property="submit" >
    						<bean:message key="button.update" />
    					</html:submit>
    				</td>
    				<td class="td_ligne" style="vertical-align: middle;">					
    					<html:submit property="submit" >
    						<bean:message key="button.delete" />
    					</html:submit>
    				</td>
    				</html:form>
    			</tr>
    			</logic:iterate>	
    			<tr>
    				<td class="td_titre_cadre_info" colspan="4">
    					Ajout dun domaine
    				</td>
    			</tr>
    			<tr >
    				<td class="td_soustitre">Nom</td>
    				<td class="td_soustitre">Entité dappartenance</td>
    				<td class="td_soustitre" colspan="2">Ajouter</td>
    			</tr>
    			<tr >
    				<html:form action="/addDomaine">
    				<td class="td_ligne">
    					<html:text property="dom_nom" size="45" />
    				</td>
    				<td class="td_ligne">
    					<html:select property="dom_enti_codeId" style="width: 300;">
    						<html:optionsCollection name="entites" label="entite_nom" value="entite_codeId" />
    					</html:select>
    				</td>
    				<td class="td_ligne" style="vertical-align: middle;" colspan="2">					
    					<html:submit property="submit" >
    						<bean:message key="button.add" />
    					</html:submit>
    				</td>
    				</html:form>
    			</tr>
    		</table>
     
    </body>
    </html>
    Pour le form /addDomaine, je n'ai aucun soucis puisque j'ajoute un domaine. Je n'ai donc pas besoin d'initialiser le select sur un élément.

  4. #4
    Membre habitué
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Points : 143
    Points
    143
    Par défaut


    Le souci est que la valeur dom_enti_codeId de ton form n'est pas initialisée avec ta valeur.

    il faut que tu fasses référence à la valeur de l'entité de ton domaine courant. Ajoutes simplement l'attribue value dans le select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="domaine.dom_enti_codeId"

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Ca ne fonctionne pas.
    Il faut savoir que dom_enti_codeId du bean domaines n'est pas un Integer, mais une reference sur une entité (j'utilise hibernate).
    J'ai quand même essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    value="domaine.dom_enti_codeId.entite_codeId"
    ou d'autres variantes mais ça ne fonctionne pas non plus.

    Je ne sais pas si je me suis assez bien exprimé, voilà mon mapping hibernate qui parlera peut être mieux que moi :3
    Domaines.hbm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <hibernate-mapping>
    	<class name="fr.generali.hibernate.tables.Domaines" table="TB_DOMAINES2">
    		<id name="dom_codeId" type="integer" column="DOM_CODEID" >
    			<generator class="increment" />
    		</id>
    		<property name="dom_nom" column="DOM_NOM" />
    		<many-to-one name="dom_enti_codeId" column="ENTI_CODEID" />
    		<property name="dom_label" column="DOM_LABEL" />
    	</class>
    </hibernate-mapping>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<class name="fr.generali.hibernate.tables.Entites" table="TB_ENTITES">
    		<id name="entite_codeId" type="integer" column="ENTI_CODEID">
    			<generator class="increment" />
    		</id>
    		<property name="entite_nom" column="ENTI_NOM" />
    		<property name="entite_label" column="ENTI_LABEL" />
    		<set name="domaineSet" inverse="true" cascade="all-delete-orphan">
    	    	<key column="enti_codeId"/>
    	    	<one-to-many class="fr.generali.hibernate.tables.Domaines"/>
    		</set>
    	</class>
    et mes 2 classes java Domaines et Entites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Entites {
     
    	// Déclaration des variables en relation avec la bdd
    	private Integer entite_codeId;
    	private String entite_nom;
    	private String entite_label;
    	private Set domaineSet = new HashSet();
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Domaines implements Serializable {
     
    	// Déclaration des variables en relation avec la bdd
    	private Integer dom_codeId;
    	private String dom_nom;
    	private Entites dom_enti_codeId;
        private String dom_label;
    ...
    }

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Bon, je crois que pour le moment je vais garder la solution qui fonctionne avec un DynaActionForm.
    Tant pis pour le ActionForm :3

    Si toutefois, quelqu'un a une solution, je suis preneur

  7. #7
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="${domaine.dom_enti_codeId.entite_codeId}"

  8. #8
    Membre habitué
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Points : 143
    Points
    143
    Par défaut
    Biensûr que c'est cela...

    petit scarabé deviendra grand

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    En effet c'est cela
    Promis je deviendrai grand !

    Merci en tout cas :3

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/08/2009, 10h43
  2. Réponses: 9
    Dernier message: 05/11/2008, 21h26
  3. [CF 2.0] - Initialisation d'un Windows.form dans un thread
    Par Mr.abdEr dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 10/06/2008, 16h23
  4. Plusieurs actions possible dans un <form>
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/08/2006, 21h23
  5. Passage dans l'Action form dès l'initialisation
    Par rikunter dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/04/2006, 09h35

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