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 :

Formulaire avec des données pré-remplies


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 69
    Par défaut Formulaire avec des données pré-remplies
    Bonjour,

    Par curiosité, je pose la question : comment est-ce que vous faîtes pour présenter un formulaire dans lequel des champs sont pré-remplis ?

    Je resserre un peu le cadre de ma question :

    Je travaille avec des form-bean de type org.apache.struts.validator.DynaValidatorForm.

    Cette question fait suite à un besoin simple : j'ai un formulaire pour ajouter des personnes. Je souhaite avoir un formulaire pour modifier une personne maintenant.

    Ce que j'ai fait, c'est de créer un Utilisateur dans l'Action Struts qui mène vers le formulaire (page jsp), et faire une correspondance dans la page jsp.

    Action Struts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      public ActionForward execute(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response)
          throws Exception {
     
        User user = new User();
     
        user.setFirstname("Jacques");
     
        request.setAttribute("userForm", user);
     
        return mapping.findForward("success");
      }
    Formulaire (page JSP)
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text name="userForm" property="firstname" size="30" />

    Je pose la question parce que je pense qu'on peut faire autrement. Struts, lors d'une erreur de saisie (validator), renvoie au formulaire avec les données qu'on avait rentrées. Il y a donc un moyen de remplir ces champs sans changer le code de la page JSP.

    Est-ce que vous avez des pistes ?

    Merci d'avance,

    piloupy

  2. #2
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Bonjour,

    Pour initialiser un formulaire, il faut l'ActionForm de ton formulaire.
    La classe Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /** Initialise le formulaire et forward sur la page de modificaiton */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response)
          throws Exception {
     
        UserForm user = (UserForm) form;
        user.setFirstname("Jacques");
        return mapping.findForward("modification");
      }
    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 69
    Par défaut
    je n'en ai pas puisque j'utilise la classe org.apache.struts.validator.DynaValidatorForm.

    Est-ce que tu sous-entends que je dois créer une classe comme suit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class UserForm extends DynaValidatorForm {
      ...
    }
    piloupy

  4. #4
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Voici l'action en utilisant un Form DynaActionForm:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /** Initialise le formulaire et forward sur la page de modificaiton */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response)
          throws Exception {
     
        DynaActionForm user = (DynaActionForm) form;
        user.set("firstname", "Jacques");
     
        return mapping.findForward("modification");
      }

  5. #5
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Citation Envoyé par piloupy
    je n'en ai pas puisque j'utilise la classe org.apache.struts.validator.DynaValidatorForm.

    Est-ce que tu sous-entends que je dois créer une classe comme suit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class UserForm extends DynaValidatorForm {
      ...
    }
    piloupy
    Tu peux hériter de DynaValidatorForm (UserForm extends DynaValidatorForm) et dans ton action, tu casteras le form en ton form spécifique comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        UserForm user = (UserForm) form;
        user.setFirstname("Jacques");
        return mapping.findForward("modification");
    Personnellement, je préfère cette solution à la solution suivate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       DynaActionForm user = (DynaActionForm) form;
        user.set("firstname", "Jacques");
        return mapping.findForward("modification");
    puisque cette dernière force le couplage de la couche applicative et la couche de persistance. En fait, si le modèle change (l'attribut "firstname" devient "prenom" par exemple), tu seras obligé de changer les String hardcodées dans les actions, alors qu'en travaillant avec ton "UserForm" qui hérite de DynaActionForm, le "setter" de "firstname"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user.setFirstname("Jacques");
    deviendra:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user.setPrenom("Jacques");
    et ce refactoring se fait lors du changement du modèle et ne risque pas de donner des erreurs au runtime car, si on oublie de modifier un "setter" on le verra à la compilation.

Discussions similaires

  1. [AC-2010] [Formulaire] Filtrage des données avec zone de liste déroulante
    Par Lologolas dans le forum IHM
    Réponses: 2
    Dernier message: 22/11/2011, 11h14
  2. retour au formulaire avec les données pré-remplis
    Par kbazin dans le forum Langage
    Réponses: 5
    Dernier message: 02/08/2011, 04h13
  3. Ouvrir un formulaire avec des données vierges
    Par cfidko dans le forum IHM
    Réponses: 2
    Dernier message: 11/06/2007, 12h33
  4. Réponses: 6
    Dernier message: 11/07/2006, 10h56

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