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 :

Initialisation d'un formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut Initialisation d'un formulaire
    Bonjour,

    Je souhaiterais avoir vos avis éclairés sur l'initialisation des formulaires.
    En effet, je présente à l'usager un tableau (displaytag) avec un lien permettant de modifier l'un des objets du tableau.
    A travers ce lien, je passe l'id de l'objet en paramètre.

    Sur mon formulaire, je peux alors faire du traitement pour récupérer l'objet :

    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
     
    <%
    		Utilisateur utilisateur = new Utilisateur();
    		if(null != request.getParameter("idUtilisateur") &&
    				!request.getParameter("idUtilisateur").isEmpty()) {
    			int idUtilisateur = Integer.valueOf(request.getParameter("idUtilisateur")).intValue();
    			utilisateur = UtilisateurManager.getInstance().getUtilisateur(idUtilisateur);
    		}
    	%>
     
    	<layout:form action="/validerUtilisateur" styleClass="formuser" focus="identifiant">
    		<layout:text bundle="messages" key="identifiant" property="identifiant" size="32" maxlength="32" isRequired="true" value="<%=utilisateur.getLogin()%>"/>
    		<layout:text bundle="messages" key="nom" property="nom" size="32" maxlength="32" isRequired="true" value="<%=utilisateur.getNom()%>"/>
    		<layout:text bundle="messages" key="prenom" property="prenom" size="32" maxlength="32" isRequired="true" value="<%=utilisateur.getPrenom()%>"/>
    		<layout:text bundle="messages" key="password" property="password" size="32" maxlength="32" isRequired="true" value="<%=utilisateur.getPwd()%>"/>
     
    		<layout:column>
    			<layout:radio bundle="messages" key="lecture" property="accesModification"/>
    			<layout:radio bundle="messages" key="modification" property="accesModification"/>
    		</layout:column>
     
    		<layout:column>
    			<h4 align="left"><u>Droits :</u></h4>
    			<layout:checkbox bundle="messages" key="stats" property="accesStats"/>
    			<layout:checkbox bundle="messages" key="utilisateur" property="adminUtilisateur"/>
    			<layout:checkbox bundle="messages" key="parametres" property="adminParametres"/>
    			<layout:checkbox bundle="messages" key="export" property="accesExport"/>
    		</layout:column>
    		<layout:row >
    			<layout:submit styleClass="formuser">
    				<layout:message bundle="messages" key="abandon"/>
    			</layout:submit>
    			<layout:submit styleClass="formuser" reqCode="ajouterUtilisateur">
    				<layout:message bundle="messages" key="valider"/>
    			</layout:submit>
    		</layout:row>
     
    	</layout:form>

    1) Tout d'abord est ce une bonne solution ? Ou alors y'a t il de meilleurs solutions ?
    2) Ensuite, comment initialiser les radio button et checkbox ? (accesModification, accesStats, adminUtilisateur, adminParametres et accesExport sont des boolean dans mon bean)


    Merci d'avance pour vos réponses,

  2. #2
    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
    Tout d'abord, ce n'est pas DisplayTag que tu utilises mais Struts-Layout.

    Sinon, le traitement de récupération du paramètre id et d'initialisation du formulaire doit plutôt se faire dans une Action qui s'exécute avant l'affichage du formulaire.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    oui sur cette jsp j'utilise struts layout
    mais l'appel à cette jsp se fait via un lien affiché dans un displaytag et personnalisation du decorator

    je suis débutant (en struts et plus généralement appli client serveur) donc désolé si je ne me suis pas bien fait comprendre

    la solution la plus appropriée serait donc de modifier le form dans l'action avant la redirection ?

  4. #4
    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
    C'est surprenant de combiner l'utilisation de DisplayTag et Struts-Layout mais bon, pourquoi pas.

    L'idéal serait que, lors du clic sur le lien dans le tableau, tu exécutes une Action Struts et que tu initialises les propriétés du formulaire dans cette Action.

    Il faudrait donc définir une nouvelle Action liée au formulaire dans le struts-config.xml par exemple comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/initUtilisateur" type="tonpackage.InitUtilisateurAction" name="nomDuFormBean" validate="false">
        <forward name="success" path="/utilisateur.jsp"/>
    </action>
    et dans l'Action, tu récupères l'id et tu initialises les propriétés du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Utilisateur utilisateur = new Utilisateur();
    if(null != request.getParameter("idUtilisateur") &&
    		!request.getParameter("idUtilisateur").isEmpty()) {
    	int idUtilisateur = Integer.valueOf(request.getParameter("idUtilisateur")).intValue();
    	utilisateur = UtilisateurManager.getInstance().getUtilisateur(idUtilisateur);
    }
     
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setIdentifiant(utilisateur.getLogin()) ;
    tonActionForm.setNom(utilisateur.getNom()) ;
    tonActionForm.setPrenom(utilisateur.getPrenom()) ;
    tonActionForm.setPassword(utilisateur.getPwd()) ;
     
    mapping.findForward("success") ;
    et si tu veux qu'un bouton radio ou que certaines checkbox soit pré-cochées, il suffit d'initialiser à true la propriété du formulaire correspondante de la même manière que pour les propriétés identifiant, nom, ...

    Il faut penser ensuite à enlever les attributs value dans les tags layout:text.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    merci je vais tester cela ce soir car là je suis dans d'autres modifs qui ne me permettent pas de le faire
    j'utilise les deux car j'ai découvert struts-layout après avoir commencé à utiliser displaytag et surtout j'ai trouvé displaytag très simple à utiliser. Par manque de temps je n'ai pas repris mes tableaux avec struts layout et comme c'est "compatible", on verra plus tard.

    Je te tiens au courant de mes avancés de ce soir, merci encore de tes réponses claires et précises.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    je me pose une autre question du coup, car avant j'avais un décorateur qui me retournait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public String getIdentifiantData() {
    		UtilisateurData userData= (UtilisateurData) getCurrentRowObject();
    		int idUtilisateur = userData.getIdUtilisateurData();
    		String identifiant = userData.getIdentifiantData();
            return "<a href=\"utilisateur.jsp?idUtilisateur="+idUtilisateur+"\">"+identifiant+"</a>";
    	}
    Comment puis je appeler l'action d'initialisation à partir d'un href ? Ou alors dois je passer par un <html:link> (enfin si cela peut s'insérer dans un tableau displaytag) ?

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    question bête :

    <a href="/MONPROJET/initUtilisateur.do?idUtilisateur=monIdUtilisateur">monidentifiant</a>

    non ?

  8. #8
    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
    Dans href, tu peux remplacer utilisateur.jsp par initUtilisateur.do sans oublier d'ajouter le contexte de l'application devant via un request.getContextPath() pour éviter de le coder en dur, si toutefois tu as accès à request.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    disons que je peux avoir accès au request dans le decorateur via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getPageContext().getRequest()
    Mais j'ai eu des effets de bord en ajoutant une lib nécessaire. Cela fera l'objet d'une prochaine question

    edit : je vais tester la solution vu que j'ai terminé mon autre tâche

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    Résultat :

    1 bonne nouvelle : je n'ai plus les effets de bord cités ci-dessus...

    1 mauvaise nouvelle : mon form apparaît vierge

    Au debuggeur, je passe bien dans mon action d'initialisation et je fais bien un set avec les bonnes valeurs.

  11. #11
    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
    Peux-tu montrer le mapping des deux Actions dans le struts-config.xml ?

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    alors voici mes 2 actions pour l'utilisateur :

    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
     
     
    		<action
    			path="/listeUtilisateur"
    			name="utilisateur1"
    			scope="request"
    			input="/vues/utilisateur1.jsp"
    			parameter="/vues/utilisateur1.jsp"
    			type="action.RechercherUtilisateurAction">
    				<forward name="initUtilisateur" path="/initUtilisateur.do" redirect="true"/>
    		</action>
    		<action
    			path="/initUtilisateur"
    			name="utilisateur3"
    			scope="request"
    			input="/vues/utilisateur3.jsp"
    			parameter="/vues/utilisateur3.jsp"
    			type="action.InitUtilisateurAction">
    				<forward name="success" path="/vues/utilisateur3.jsp" redirect="true"/>
    		</action>

    PS : je reviens, je dois aller chercher mes enfants à l'école

  13. #13
    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
    Il me faut plutôt le mapping de initUtilisateur et validerUtilisateur.
    Ces deux Actions doivent évidemment être liées au même form-bean.

    EDIT : il faut mettre validate à false dans le mapping de /initUtilisateur et donc il n'est pas utile de mettre un attribut input.

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    J'ai remis à jour initUtilisateur avec tes conseils

    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
     
    <action
    			path="/listeUtilisateur"
    			name="utilisateur1"
    			scope="request"
    			input="/vues/utilisateur1.jsp"
    			parameter="/vues/utilisateur1.jsp"
    			type="action.RechercherUtilisateurAction">
    				<forward name="initUtilisateur" path="/initUtilisateur.do" redirect="true"/>
    		</action>
    		<action
    			path="/initUtilisateur"
    			name="utilisateur3"
    			scope="request"
    			validate="false"
    			parameter="/vues/utilisateur3.jsp"
    			type="action.InitUtilisateurAction">
    				<forward name="success" path="/vues/utilisateur3.jsp" redirect="true"/>
    		</action>
    		<action
    			path="/validerUtilisateur"
    			name="utilisateur3"
    			scope="request"
    			parameter="/vues/utilisateur3.jsp"
    			input="/vues/utilisateur3.jsp"
    			type="action.ValiderUtilisateurAction">
    				<forward name="creerUtilisateur" path="/creerUtilisateur.do" redirect="false"/>
    		</action>

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    j'ai également essayé avec un DynaValidatorForm mais pareil...

  16. #16
    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
    Mets le redirect à false dans le mapping des Actions.

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    alors j'ai normalement trouvé : c'est le redirect qu'il faut mettre à false

    par contre, quelqu'un pourrait t il m'expliquer pourquoi ?
    comment fonctionne le redirect exactement ?

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    oups désolé j'avais pas fait de mise à jour avant...

    sais tu pourquoi ?

    PS : ça se fête le 5000eme message

  19. #19
    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
    Quand tu mets redirect à true, une nouvelle requête est construite avant d'afficher la page.
    Tu perds donc tout ce qui est stocké dans le scope request.

  20. #20
    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
    Citation Envoyé par chris78 Voir le message
    PS : ça se fête le 5000eme message
    Effectivement.
    Je n'avais pas fait attention.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] Initialisation d'un formulaire avec une boucle FOR
    Par apnw7931 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/03/2011, 15h14
  2. Initialisation d'un formulaire
    Par georgesasc dans le forum IHM
    Réponses: 2
    Dernier message: 05/07/2010, 14h29
  3. [ZF 1.10] Initialiser Valeur Champ Formulaire
    Par Flamenco dans le forum Zend_Form
    Réponses: 8
    Dernier message: 01/04/2010, 11h36
  4. Méthode d'Initialisation d'un formulaire
    Par saziley dans le forum Struts 2
    Réponses: 2
    Dernier message: 30/03/2009, 17h48
  5. Initialisation variable dans formulaire
    Par yagrasdemonde dans le forum Langage
    Réponses: 4
    Dernier message: 05/12/2008, 20h41

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