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 :

[STRUTS] Ré-init d'un formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Par défaut [STRUTS] Ré-init d'un formulaire
    Bonjour,

    J'ai un formulaire (bean) associé à une action. Lorsque l'internaute remplit ce formulaire il clique sur le bouton de validation. Tout est ok, l'action s'exécute.
    Lorsque l'internaute revient ce même formulaire les valeurs saisies précédemment sont affichées.

    Comment ré-initialiser ce formulaire pour que les aciennes valeurs ne soient pas prises en compte. J'ai essayé la méthode reset, mais c'est sans effet.

    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    Bonjour!
    tu dois avoir déclaré ton action avec un scope "session".
    Je pense que ca doit venir de la!

    +++
    vandoor

  3. #3
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut
    Bonjour,

    Si tu as besoin des infos de ton formulaire par la suite, le scope session est bien. Apres pour réinitialiser ton formulaire, un simple javascript permettra d'effacer les champs de ton formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script language="javascript">
    window.onload=effacer;
    function effacer(){
    with(document.nom_formulaire){
    _nom_champ.value="";
    }
    }
    </script>

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    L'actionForm doit etre dans le scope request, le form est censé seulement transmettre les données entre le Html est l'Action..struts appel la méthode reset automatiquement avant de re-populate de la request ..

  5. #5
    zl
    zl est déconnecté
    Membre éprouvé
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Par défaut
    Pour réinitialiser ton form, tu peux redéfninr la méthode reset de ton action form.

    Zl.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    Salut,

    je te conseille aussi d'implémenter reset(mapping,request) et ainsi tu pourra même si tu le veux forcer le reset du bean en appellant cette méthode dans tes actions.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Bonsoir, je profite de ce sujet pour soumettre mon problème qui a rapport avec la réinitialisation de mon formulaire.

    Voilà, à chaque fois que je "submit" mon formulaire, il déclenche la méthode reset() de mon ActionForm. Remarque il le fait aussi la première fois que j'affiche ma page (ce qui est normal). Par contre, le fait qu'il le fasse systématiquement me pose des problèmes car j'y fait beaucoup d'initialisation que je ne souhaiterais pas avoir à refaire à chaque submit mais seulement la première fois que j'affiche la page.

    Une solution à ce problème ?

    Par avance, merci.

    ps: mon action est bien en scope="request" car en scope="session", il fait le reset() une seule fois pour toutes !

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    Ce que tu pourrais faire c'est mettre dans le reset() les initialisations que tu veux bien qu'il fasse à chaque fois, et ensuite tu te crée une méthode vider() par exemple dans laquelle tu place les initialisations que tu veux contrôler.
    Et cette méthode tu l'appelle dans ton Action une fois que tu as traité ce que tu avais à faire avec les données du form, juste avant le forward quoi.

    C'est comme ca que j'ai fait lorsque j'avais ce problème.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    merci vallica, c'est une astuce interressante.

    Cependant, ce que je souhaite, c'est dès que j'arrive dans mon formulaire, les initialisations qui dépendent de la base de données soient bien effectuées (ex: cas de la modification d'une fiche client). D'où l'utilisation de la méthode reset(). Il ne m'est donc pas possible d'attendre que le formulaire soit validé (Action) pour charger les données et il ne faut pas non plus (car là c'est bien ce qui se passe pour moi) que les données issues de la base de données "écrasent" dans le reset() celles qui auraient pu être modifiées par l'utilisateur dans le formulaire...

    Si tu as une autre astuce, je suis preneur.
    merci.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    ben moi ce que je fais dans ces cas là, et je bosse la dessus tous les jours je suis en stage, admettons que tu ais déjà 3 fichiers :

    la jsp
    l'ActionForm
    l'Action

    tu en fait un 4° qui sera une Action.
    Cette action tu met son validate à false dans struts-config.xml.
    Appelle la par exemple leNomDeTonFormBuilder.java.

    Ce builder tu le map avec l'ActionForm que tu possède déjà, celui de ton form.

    Dans la méthode execute() de ce Builder, tu récupère le paramètre "form" tu le cast en la classe de ton ActionForm et comme ca tu peux via tes classes dao initialiser le bean de formulaire.
    Quant tu as fini tes initialisations, tu forward vers la jsp.

    Le reset() ne doit pas être (c'est mon humble avis) utilisé pour initialiser un formulaire, mais pour vider son bean.

    Et donc tu appelle l'affichage de ton formulaire par leNomDeTonFormBuilder.do par exemple ou tout autre terme que tu met dans le mapping de struts et qui lance l'Action Builer que tu as créé.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Merci pour ton aide.
    J'essayerai demain. J'avais déjà utilisé un peu cette méthode mais apparemment, elle me causait d'autres soucis...
    Je vais essayer et te tiens au courant.

    Good night

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Bon ben j'ai fait ce que tu m'as dit et c'est ok. J'arrive bien à initialiser les données de mon formulaire. Petit problème néanmoins, lorsque je valide le formulaire, la méthode reset() du bean correspondant est appelée et je me retrouve avec des null values ou collection non remplies ce qui provoque un plantage....
    Pourtant, dans mon action (celui d'initialisation), je cast bien mon bean, rempli les attributs et avant le return new ActionForward("monAction");, je fais tous les setProperty qui vont bien...
    Aurais-tu une explication à ça étant donné que tu as déjà pratiqué, tu as surment du rencontrer ce problème ?

    merci.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Ayé !
    J'ai trouvé.
    Pour que ça marche, il faut définitir les actions-mappings (init + action) en scope "session".....

    encore merci.

Discussions similaires

  1. [Struts 1.3] Probleme recuperation formulaire
    Par noOneIsInnocent dans le forum Struts 1
    Réponses: 5
    Dernier message: 10/12/2008, 15h47
  2. [Struts] idées pour coder un formulaire genre planning
    Par jahjah42 dans le forum Struts 1
    Réponses: 6
    Dernier message: 30/11/2005, 16h53
  3. [Struts] pré-remplissage d'un formulaire
    Par touriste44 dans le forum Struts 1
    Réponses: 10
    Dernier message: 27/10/2005, 12h16
  4. [Struts]Appels successifs à un même formulaire
    Par pimousse76 dans le forum Struts 1
    Réponses: 2
    Dernier message: 24/11/2004, 13h13
  5. [Struts] Problème de formulaire(s) ...
    Par djoukit dans le forum Struts 1
    Réponses: 8
    Dernier message: 10/03/2004, 23h48

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