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 :

Problèmes de liens avec LookupDispatchAction


Sujet :

Struts 1 Java

  1. #1
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut Problèmes de liens avec LookupDispatchAction
    Salut,
    je voudrai utiliser une LookupDispatchAction, mais j'ai un un petit problème dans son utilisations avec les liens
    en effet, mes lient du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:link action="/monAction.do?action=maMéthode">
       réaliser un action
    </html:link>
    ne fonctionnent pas correctement .
    pour expliquer le problème en partie, j'ai une page qui permet d'organiser des événements, un événement peut être organisé par plusieurs personnes, donc dans ma classe LookupDispatchAction, j'ai trois actions possibles : une pour rajouter un organisateur (organisateurs.add (new Personne ())... rien de bien compliqué ), un autre pour retirer un organisateur, et l'autre pour soumettre le formulaire (celle là re-dirige vers la même page pour l'instant et ne fait qu'un affichage -c'est pour les tests-).
    en fait, pour l'action de soumission je la déclare un bouton submit, et pour les autres, j'utilise des liens car il n'ont aucune raison d'être des boutons.
    Mon problème est que mes liens ne fonctionnent pas du tout au début. sauf si je fait appelle au moins une fois au bouton de soumission .après, il veulent bien fonctionner, mais pas avant.
    Je ne sais pas d'où pourrait venir un tel problème. Donc si vous pouvez m'aider, je vous en serais reconnaissant .
    merci d'avance.

  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
    As-tu regardé la FAQ Struts ici ?

  3. #3
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    oui bien sûr, c'est d'ailleurs toi qui m'avait proposé d'aller la voire (dans une autre discussion) . chose que j'ai fait, mais ça ne marche toujours pas.

  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
    Dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:link action="/monAction.do?action=maMéthode">
       réaliser un action
    </html:link>
    maMéthode correspond bien au libellé de la clé définie dans le fichier properties de la méthode à exécuter ?

  5. #5
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    oui oui, ça correspond :
    Bon, je met plus de détails cette fois, j'avoue que j'en ai été avare pour l'instant .
    mon struts-config :
    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
     
    <struts-config>
    <form-beans>
    ...
       <form-bean name="NouvelEvenementForm"
          type="com.mariages.struts.form.NouvelEvenementForm" />
    ...
    </form-beans>
    <action-mappings>
    ...
       <action input="/nouvelEvenement.jsp" path="/nouvelEvenement"
          name="NouvelEvenementForm"
          type="com.mariages.struts.action.NouvelEvenementAction"
          scope="session" parameter="action">
          <forward name="initialiserNouvelEvenement"
             path="/nouvelEvenement.jsp" />
          <forward name="ajouterOrganisateur"
             path="/nouvelEvenement.jsp" />
          <forward name="retirerOrganisateur"
             path="/nouvelEvenement.jsp" />
          <forward name="ajouterEvenement"
             path="/nouvelEvenement.jsp" />
       </action>
    ...
    </action-mappings>
    <message-resources
       parameter="com/mariages/struts/ApplicationResource" />
     
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
       <set-property property="pathnames"
          value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
    </plug-in>
    </struts-config>
    mon ValidatorForm :
    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
     
    package com.mariages.struts.form;
     
    //importations
     
    public class NouvelEvenementForm extends ValidatorForm {
    	private static final long serialVersionUID = 3171110937645000144L;
     
    	//...autres attributs
     
    	private Set<Personne> organisateurs = new HashSet<Personne>();
     
    	public void ajouterOrganisateur(){
    		organisateurs.add(new Personne ());
    		System.out.println("nombre d'organisateurs pour le moement : "+organisateurs.size());
    	}
    	public void retirerOrganisateur(){
    		int size = organisateurs.size();
    		if(size > 1){
    			Set<Personne> newOrganisateur = new HashSet<Personne>();
    			Iterator it = organisateurs.iterator();
    			for (int i=0;i<size-1;i++){
    				newOrganisateur.add((Personne)it.next());
    			}
    			this.setOrganisateurs(newOrganisateur);
    		}
    	}
    	public int getNombreOrganisateurs(){
    		return organisateurs.size();
    	}
    	//setters et getters
    	@Override
    	public String toString(){
    		String s = new String();
    		s+="\nle libellé de l'évenement est : '"+this.libelle+"'\net les organisateurs sont:";
    		Iterator it = organisateurs.iterator();
    		while(it.hasNext()){
    			s+="\n"+((Personne)it.next()).getIdentifiant();
    		}
    		return s;
    	}
     
    	/*
    	 * (non-Javadoc)
    	 * 
    	 * @see org.apache.struts.validator.ValidatorForm#validate(org.apache.struts.action.ActionMapping,
    	 *      javax.servlet.http.HttpServletRequest)
    	 */
    	@Override
    	public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
    		ActionErrors errors = super.validate(arg0, arg1);
     
    		return errors;
    	}
    }
    ma classe d'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
    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
     
    package com.mariages.struts.action;
     
    //importations
     
    public class NouvelEvenementAction extends LookupDispatchAction {
     
       public ActionForward initialiserNouvelEvenement(ActionMapping mapping,
             ActionForm form, HttpServletRequest request,
             HttpServletResponse response) throws IOException, ServletException {
          System.out.println("==============<>InitNouvelEvenementAction<>==============");
          request.getSession().setAttribute("typesEvenement",
          BeanUtil.loadTypesEvenement());
          request.getSession().setAttribute("listePays", BeanUtil.loadPays());
          Set<Personne> organisateurs = new HashSet<Personne>();
          organisateurs.add(new Personne());
          request.getSession().setAttribute("organisateurs", organisateurs);
          request.getSession().setAttribute("nombreOrganisateurs", 1);
          return mapping.findForward("initialiserNouvelEvenement");
       }
     
       public ActionForward ajouterOrganisateur(ActionMapping mapping,
          ActionForm form, HttpServletRequest request,
          HttpServletResponse response) throws IOException, ServletException {
          ((NouvelEvenementForm) form).ajouterOrganisateur();
          System.out.println("==============<>ajouterOrganisateur<>==============");
          return mapping.findForward("ajouterOrganisateur");
       }
     
       public ActionForward retirerOrganisateur(ActionMapping mapping,
             ActionForm form, HttpServletRequest request,
             HttpServletResponse response) throws IOException, ServletException {
          System.out.println("==============<>retirerOrganisateur<>==============");
          ((NouvelEvenementForm) form).retirerOrganisateur();
          return mapping.findForward("retirerOrganisateur");
       }
     
       public ActionForward ajouterEvenement(ActionMapping mapping,
             ActionForm form, HttpServletRequest request,
             HttpServletResponse response) throws IOException, ServletException {
          System.out.println("==============<>enregistrement évenement<>==============");
          System.out.println((NouvelEvenementForm) form);
          return mapping.findForward("ajouterEvenement");
       }
     
       @Override
       protected Map<String, String> getKeyMethodMap() {
          Map<String, String> map = new HashMap<String, String>();
          map.put("initialiserNouvelEvenement", "initialiserNouvelEvenement");
          map.put("ajouterEvenement", "ajouterEvenement");
          map.put("ajouterOrganisateur", "ajouterOrganisateur");
          map.put("retirerOrganisateur", "retirerOrganisateur");
          return map;
       }
    }
    donc, le premier truc qui ne fonctionne pas, c'est le lien vers mon action d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:link action="/nouvelEvenement.do?action=initialiserNouvelEvenement">
       Organiser un nouvel évenement
    </html:link>
    Donc pour accéder à ma page, j'ai créé une action indépendante (je sais que c'est moche, mais je ne peut pas faire autrement pour l'instant )

    les autre liens qui ne fonctionnent pas sont ceux dont j'ai parlé au début, à savoir l'ajout et le retrait de nouveaux organisateurs, auxquels je fait appelle par le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <layout:link page="/nouvelEvenement.do?action=ajouterOrganisateur">ajouter un autre organisateur</layout:link>
    <logic:greaterThan value="1" name="nouvelEvenementForm" property="nombreOrganisateurs">
       <layout:link action="/nouvelEvenement.do?action=retirerOrganisateur">retirer le dernier organisateur</layout:link>
    </logic:greaterThan>
    ce que j'ai le plus de mal à comprendre, c'est le fait que :
    d'abord mon action d'initialisation du LookupDispatchAction se met à fonctionner lorsque les variables de session sont initialisés (quand je fait appelle la première fois à mon action indépendante) sachant quand même que j'ai mis le même code dans la méthode execute !!!
    en suite les actions ajouter et retirer un organisateur se mettent à fonctionner correctement lorsque je fait appelle une première fois à la méthode ajouterEvenement (le bouton submit)
    j'ai vraiment su mal à comprendre les réactions de struts dans ce cas précis !!!
    il est vrai que je suis encore débutant en struts, mais là ... je suis complètement paumé

  6. #6
    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 anayathefirst
    donc, le premier truc qui ne fonctionne pas, c'est le lien vers mon action d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:link action="/nouvelEvenement.do?action=initialiserNouvelEvenement">
       Organiser un nouvel évenement
    </html:link>
    Quel message d'erreur as-tu ?
    Que contient le fichier properties ?

  7. #7
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    en fait, ce n'ai pas une question de message d'erreur, je sais qu'il ne réalise pas ma méthode "initialiserNouvelEvenement" parcequ'il ne fait pas l'affichage qu'il est sensé faire au tout début ,
    pour le fichier ApplicationResource.properties, il ne contient pas grand chose :juste quelques messages et mes actions pour le moent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    initialiserNouvelEvenement=initialiserNouvelEvenement
    ajouterOrganisateur=ajouterOrganisateur
    retirerOrganisateur=retirerOrganisateur
    ajouterEvenement=ajouterEvenement

  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
    S'il n'y a pas de message d'erreur et qu'il n'exécute pas la méthode, je ne vois qu'un problème de validation.
    Si, pour tester, tu mets le form-bean en validate="false" dans le mapping de l'Action, la méthode initialiserNouvelEvenement s'exécute-t'elle ?

  9. #9
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    tu avais raison (comme d'habitude tu vas me dire ), s'était un problème de validation.
    j'ai mis validate = "false" comme tu me l'avais suggéré et maintenant ça marche .
    merci beaucoup.

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

Discussions similaires

  1. Problème de lien avec struts
    Par gloglo dans le forum Struts 1
    Réponses: 17
    Dernier message: 05/06/2006, 11h08
  2. Problème de lien avec wsock32.dll sous g++ (mingw32)
    Par TheShadow dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 11/04/2006, 15h43
  3. Problèmes de liens avec ODBC vars DB Oracle
    Par kmingaso dans le forum ASP
    Réponses: 1
    Dernier message: 05/09/2005, 10h51
  4. problème de liens avec API sous VC++
    Par xavynfive dans le forum MFC
    Réponses: 7
    Dernier message: 26/08/2005, 13h01

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