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 :

LookupDispathAction


Sujet :

Struts 1 Java

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Points : 43
    Points
    43
    Par défaut LookupDispathAction
    Bonjour,

    J'ai un formulaire basic qui pointe sur une class Action pour créer des enregistrements.
    J'ai aussi une page qui me liste les occurences de ma table.

    Maintenant j'aimerai ajouter pour chaque ligne de ma liste un bouton Supprimer, Modifier. Pour cela je souhaite utiliser LookupdispatchAction.

    Dans la mesure où mon action est liée à ma page jsp contenant le formulaire de création (par l'attribut input dans struts-config.xml), et à mon form Bean (par l'attribut name dans struts-config.xml), suis-je obligé de créer une nouvelle classe LookupdispatchAction ?

    En résumé, dois-je avoir une classe Action pour mon formulaire de création, et une classe Lookupdispatch pour la suppression et la modification.

    merci

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    non pas du tout, il te suffit de modifier ton Action actuelle, à la place de la faire hériter de Action tu la fait hériter de LookupDispatchAction et c'est tout.

    Après dans ta methode getKeyMap tu met toutes les actions que tu veux faire (créer, modifier, supprimer) et tu crée les 3 méthodes qui seront exectuées selon le submit cliqué.

    Seb

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Ok, cela je le comprends.
    Mais pour ma méthode de création, j'ai un bean avec plusieurs attributs qui sont validés. Et pour mes méthodes suppression et édition, utilisables à partir d'une liste, j'ai un seul attribut (la clé de mon enregistrement). Je devrais donc avoir deux beans différents ?

    Or mon action ne peut faire référence qu'à un seul Bean.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    tu met tous ces attributs dans le meme ActionForm

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Si j'utilise le même actionform
    Les attributs de mon actionform sont obligatoires en création, mais doivent être facultatifs en suppression car je n'ai besoin que de ma clé pour supprimer mon enregistrement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <action input='/admin/utilisateur.jsp' name='utilisateurForm'
    parameter='monaction' path='/utilisateur' scope='request' 
    type='dsit.admin.utilisateur.struts.utilisateurAction'>
    <forward name='listeUtilisateur' path='/admin/listeUtilisateur.jsp'>
    </action>


    Si je clique sur supprimer depuis ma page listant mes occurences, je suis renvoyé vers utilisateur.jsp (ma page de création) avec un message m'indiquant que plusieurs champs sont obligatoires.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    montre moi ta lookupdispatchaction, tu as du mal la concevoir si tu es redirigé vers la liste.

    Dans la declaration de l'action dans le struts-config du dois créer d'autres forward, par exemple un vers une action qui permet de supprimer, un vers une action qui édite,etc..

  7. #7
    Membre du Club

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    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
    public class utilisateurAction extends LookupDispatchAction {
     
        IUtilisateurService utilisateurService;
     
     
        public utilisateurAction() {
        }
     
        public void setServlet(ActionServlet actionServlet) {
            super.setServlet(actionServlet);
            ServletContext servletContext = actionServlet.getServletContext();
            WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
            this.utilisateurService = (IUtilisateurService) wac.getBean("myIUtilisateurService");
        }
        public ActionForward ajouter(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
            utilisateurForm monUtilisateur =  (utilisateurForm)form;
            Utilisateur utilisateur = new Utilisateur();
            utilisateur.setCodeus(monUtilisateur.getCodeUS());
            utilisateur.setNom(monUtilisateur.getNom());
            utilisateur.setPrenom(monUtilisateur.getPrenom());
            utilisateur.setMotdepasse(monUtilisateur.getMotdepasse());
            utilisateur.setEmail(monUtilisateur.getCourriel());
            utilisateurService.saveUtilisateur(utilisateur);
            List listeUtilisateur = utilisateurService.listerUtilisateur();
            request.setAttribute("utilisateurList",listeUtilisateur);
            return mapping.findForward("listeUtilisateur");
    }
        public ActionForward supprimer(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    // ICI LA SUPPRESSION
              return mapping.findForward("listeUtilisateur");
    }
    public ActionForward modifier(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    // ICI LA MODIFICATION
              return mapping.findForward("listeUtilisateur");
    }
        protected Map getKeyMethodMap() {
            Map map = new HashMap();
            map.put("bouton.supprimer","supprimer");
            map.put("bouton.modifier","modifier");
            map.put("bouton.ajouter","ajouter");
            return map;
        }
     
     
    }
    Au depart utilisateurAction était une Action simple, avec un formulaire de création utilisant utilisateurForm (avec contrôle via validation.xml), et pointant après la création sur listeUtilisateur.

    Je souhaite depuis ma liste utilisateur, et pour chaque occurence, avoir un bouton supprimer, un bouton modifier. j'ai modifié utilisateurAction en lookupdispatchaction et modifié ma page jsp comme ceci.

    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
         <logic:iterate name="utilisateurList" id="utilisateur"    
               type="com.dsit.pojo.Utilisateur">
        <html:form action="/utilisateur.do">
        <tr>
           <td>
           <html:text property="codeus" readonly="true" value="us1042"/> 
            // us1042 : Valeur en dur pour tester.
          <bean:write name="utilisateur" property="codeus"/>
          </td>
        <td><bean:write name="utilisateur" property="nom"/></td>
        <td><bean:write name="utilisateur" property="prenom"/></td>
        <td><html:submit property="action">
              <bean:message key="bouton.supprimer"/>
              </html:submit>
        </td>
        <td><html:submit property="action">
                  <bean:message key="bouton.modifier"/>
              </html:submit>
        </td>
        </html:form>
        <td></td>
        </tr>
        </logic:iterate>

    Si je clique sur supprimer, je suis renvoyé sur ma page de création avec des message indiquant que des champs sont obligatoires. Normal puisque mon utilisateurAction est déclaré être utilisé par ma page jsp de création, et avec mon bean de création.

  8. #8
    Membre du Club

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    "Dans la declaration de l'action dans le struts-config du dois créer d'autres forward, par exemple un vers une action qui permet de supprimer, un vers une action qui édite,etc.."

    Est-ce que cela veut dire :
    Un lookupdispatchAction qui pointe sur une Action Ajouter, une Action Modifier, une Action Editer ?

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    tu t'es trompé dans la déclaration du paramètre car tu l'a appellé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    parameter='monaction'
    dans le struts-config alors que sur tes submit tu as mis "action" ce qui fait que la lookup ne trouve pas le paramètre et prend donc la première méthode qui lui vient à savoir celle de la création

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