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 :

Passage parametre dans une action


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut Passage parametre dans une action
    Bonjour,

    J'ai le même problème a plusieurs endroits de mon projet. Je souhaite utiliser un lien vers une action en utilisant la balise Struts html:link. J'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link href="ModifierContact.do?idContact=${contactSelectionne.id}"> Update </html:link>
    Contrairement a ce que je pensais, il semble que cela ne me fasse pas passer par l'action en question. Je suis redirige vers ma page définie en input dans le struts config, sans effectuer les opérations préalables dont j'ai besoin, dans mon action. Voici la partie du struts-config concernée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/ModifierContact" type="contacts.action.ModifierContAction" scope="session" name="ContactForm" input="/modifier_contact.jsp">
    <forward name="success" path="/modifier_contact.jsp" />
    </action>
    Savez-vous ce que je devrais modifier pour effectuer les opérations de mon action?

    Merci d'avance pour votre aide!

  2. #2
    Expert confirmé

    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
    Par défaut
    Il te redirige vers la page référencée dans l'attribut input parce qu'il exécute la méthode validate et comme tu n'as encore rien saisi dans le formulaire, il y a des erreurs de validation.

    Tu devrais créer une autre Action qui initialise le formulaire avec un validate à false :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action path="/InitModifierContact" type="contacts.action.InitModifierContAction" scope="session" name="ContactForm" validate="false">
       <forward name="success" path="/modifier_contact.jsp" />
    </action>
    <action path="/ModifierContact" type="contacts.action.ModifierContAction" scope="session" name="ContactForm" input="/modifier_contact.jsp">
       <forward name="success" path="/modifier_contact.jsp" />
    </action>
    et faire appel à cette Action dans le tag html:link.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    En effet comme ça le problème n'apparait plus. Mais comme je n'avais pas donne tous les details, ce n'est pas exactement ce que je souhaite avoir ici.

    Il s'agit en fait de modifier un contact, j'aimerais donc avoir un formulaire prerempli avec les anciennes informations. Dans mon action je récupère l'identifiant du contact en question et charge les infos ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ContactForm contactForm = (ContactForm) form;
     
    Long idContact = Long.valueOf(request.getParameter("idContact"));
     
    ContactModel contactTemp = ContactFactory.getInstance().getContactById(idContact); 
     
    contactForm.setId(idContact);
    contactForm.setNom(contactTemp.getNom());
    contactForm.setPrenom(contactTemp.getPrenom());
    J'initialise les valeurs de contactForm avec les setters de l'objet. Je pensais alors utiliser des expressions régulières dans le formulaire de la jsp suivante pour avoir des champs déjà remplis. Je passe maintenant bien par l'action, mais je ne retrouve pas l'objet dans ma jsp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <logic:present name="ContactForm" property="contactForm">
    Dans mon Struts config l'objet est declare sous le meme nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form-bean name="ContactForm"
    			type="contacts.actionForm.ContactForm">
    D'après une discussion précédente il me semblait que ça marchait ainsi...

    Avez-vous une idee de ce qui ne va pas?

  4. #4
    Expert confirmé

    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
    Par défaut
    Des expressions régulières ? tu veux dire Expressions Languages (EL) je suppose.

    Comme tu as initialisé les propriétés de l'ActionForm via leurs setters, tu n'as pas besoin d'EL dans la jsp pour voir les champs pré-remplis.

    Il suffit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html:form action="ModifierContact">
       <html:text property="nom"/>
       <html:text property="prenom"/>
    </html:form>
    Sinon, pour tester la présence du form-bean dans le scope, il ne faut pas spécifier l'attribut property dans le tag logic:present :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <logic:present name="ContactForm">

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Ca marche formidablement bien! et pourtant tellement simple... un grand merci encore !

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

Discussions similaires

  1. [Javascript, Expert] Passage parametre dans une fenetre
    Par Harfang dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/02/2007, 13h42
  2. Réponses: 10
    Dernier message: 31/03/2006, 18h56
  3. Réponses: 16
    Dernier message: 17/06/2005, 15h44
  4. Réponses: 6
    Dernier message: 24/12/2004, 16h46
  5. [langage] Passage de paramètres dans une fonction
    Par And_the_problem_is dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2004, 08h20

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