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 devant faire appel a une action pour pré-remplir ses champs


Sujet :

Struts 1 Java

  1. #21
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par azerr
    Bonjour
    je me permets de m'initer dans la conversation pour tenter de t'eclairer un peu plus sur le fonctionnement de Struts.
    pas de souci au contraire tout les eclairement sont bienvenus

    Citation Envoyé par azerr
    Tout d'abord il ne faut surtout pas faire d'acces au donnees dans ton formulaire ActionForm, ca n'est pas son role. Le formulaire struts te permet de recuperer les informations du formulaire HTML (request.getParameter("myGetter") <=> myActionForm.getMyGetter()).

    Les acces aux donnees doivent s'effectuer dans ton Action Struts et pas dans ton formulaire. Et si tu veux etre super propre les Action Struts doivent faire appel a une couche service qui fait appel a une couche DAO (acces donnees), mais bon je ne vais pas t'embrouiller.
    je suis tout a fait d'accord, je n'aimais pas trop mettre la couche données dans l'actionForm et comme je le disait, j'etait justement en train de nettoyer tout ça.

    Citation Envoyé par azerr
    A chaque fois que tu appele ton Action, la methode execute est appele,e et ta liste est charge (ceci regle ton probleme de rechargement de la liste apres un submit).
    Oui, mais justement ce que je veux c'est que la liste soit chargée avant le submit, et même avant que l'utilisateur commence a entrer ses infos d'où mon cour de natation magistral a propos de l'ordre d'execution des actionForm et Action avec un formulaire de saisie...

    en fait j'accede a mon formulaire par ma page jsp.
    a ce que j'ai compris, les formulaire de saisie sont des jsp et les action (de listing par exemple) sont accessible par des .do, maintenant peut être que je fais fausse route depuis le debut et que l'idéal et de batir un schema tel que :
    creeEmploye.do --> action d'initialisation (retour sous request, session etc) --> jsp de saisie --> actionForm (pour validation etc) --> action (pour l'enregistrement en bdd)

    le hic c'est que je n'ai pas encore vu comment parametrer tout ca dans struts-config.xml, et sur le forum quasiment toutes les solution sont d'utiliser le reset pour pré remplir les champs (bon bien sûr, derriere il y a les dispatchers etc selon les cas)

  2. #22
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Il faut acceder a ta page par l'Action Struts et pas par ta JSP. le fait d'appeler ton action te permettra de charger tes donnees puis ensuite de router sur ta JSP.

    Ton ActionForm tu l'utilises pour ce qu'a saisi l'utilisateur et pas pour remplir tes combos.

    Si tu regarde le schema http://gestcv.sourceforge.net/fr/architecture.html que j'ai fait, tu as l'ordre suivant :

    creeEmploye.do --> action d'initialisation (retour sous request, session etc) + actionForm (pour validation etc) --> jsp de saisie

    si tu utilises les DispatchAction tu peux faire

    Au premier acces de ta page :

    creeEmploye.do.dispatch=load (charge tes donnees et stocke dans la request) -> affiche la page JSP de saisie avec tes combos rempli.

    L'utilisateur saisi son formulaire et click sur enregistrer, ca appelle l'url
    creeEmploye.do.dispatch=save -> recuperer ton ActionForm (rempli par Struts en recuperer les donnnees de ton formulmaire HTML) -> sauve dans la base de donnee -> appel du ddispatch load (pour recharger tes combos et router sur ta JSP)

    Angelo

  3. #23
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    bon j'en suis à avoir donc implémenté une classe dédiée a l'initialisation de mon formulaire.

    pour le moment j'instancie donc cette classe dans le reset et fait appel a la methode init.getListeQualification(request) qui se charge donc de lire la base et de mettre les listes dans le scope request (comme ça ma page charge bien les listes)

    j'ai lu tes liens avec attention, mais j'avoue ne pas être convaincu par le dispatchAction (en fait je n'ai pas bien saisi la réelle utilité dans mon cas) qui au lieu d'optimiser mon code me le compliquerai (je rappelle que je ne suis sur struts que depuis 2 semaines, faut le temps que je digère )

    cependant, je ne suis pas encore satisfait ni certain de faire du struts dans l'ordre de l'art avec mon instanciation de classe dans le reset mais comme ça fonctionne...

  4. #24
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par azerr
    Il faut acceder a ta page par l'Action Struts et pas par ta JSP. le fait d'appeler ton action te permettra de charger tes donnees puis ensuite de router sur ta JSP.

    Ton ActionForm tu l'utilises pour ce qu'a saisi l'utilisateur et pas pour remplir tes combos.

    Si tu regarde le schema http://gestcv.sourceforge.net/fr/architecture.html que j'ai fait, tu as l'ordre suivant :

    creeEmploye.do --> action d'initialisation (retour sous request, session etc) + actionForm (pour validation etc) --> jsp de saisie

    si tu utilises les DispatchAction tu peux faire

    Au premier acces de ta page :

    creeEmploye.do.dispatch=load (charge tes donnees et stocke dans la request) -> affiche la page JSP de saisie avec tes combos rempli.

    L'utilisateur saisi son formulaire et click sur enregistrer, ca appelle l'url
    creeEmploye.do.dispatch=save -> recuperer ton ActionForm (rempli par Struts en recuperer les donnnees de ton formulmaire HTML) -> sauve dans la base de donnee -> appel du ddispatch load (pour recharger tes combos et router sur ta JSP)

    Angelo
    ok, c'est beaucoup, beaucoup plus clair tout d'un coup
    mais au niveau du struts-config, comment cela se traduit-il?

    comme ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action input="/CreeEmploye.do" name="EmployeAF" path="/creeEmploye" scope="request" type="com.myapp.struts.creeEmployeA">
           <forward name="success" path="/CreeEmploye.jsp"/>
    </action>
    pour le moment j'ai pigé comment faire le schema
    jsp --> ActionForm --> Action
    et
    .do --> Action --> JSP

    mais pas comment faire
    .do --> Action (init) --> jsp --> ActionForm --> Action

    en tout cas merci de ta patience lol

  5. #25
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Je te donne l'exemple avec DispatchAction (j'ai pas teste)

    Configurer le form (http://java.developpez.com/faq/strut...onfig_formbean)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form-bean name="creeEmployeForm" ... />
    Configurer le DispatchAction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <action name="creeEmployeForm" path="/creeEmploye" scope="request" type="com.myapp.struts.creeEmployeA" validate="false" 
      parameter="dispatch">
           <forward name="success" path="/CreeEmploye.jsp"/>
    </action>
    Important validate="false" (sinon ca declenche le validate a chque foisd que tu appeles ton action)
    parameter="dispatch" pour dir que tu peux utiliser les DispatchAction (il faut que creeEmployeA etende de DispatchACtion).

    public class creeEmployeA extends DispatchAction () {

    public ActionForward load(....) {
    // Charge les combos


    // forward vers ta JSP CreeEmploye.jsp
    return mapping.findForward("success");
    }

    public ActionForward save() {
    // VALIDATION DU FORMULAIRE
    ActionErrors errors = form.validate(mapping, request);
    if (!errors.isEmpty()) {
    // ERREUR DE VALIDATION, SAUVEGARDE DES ERREUR ET RECHARGEMENT DE LA PAGE
    // SANS RECHARGER LE COLLABORATEUR DE LA BASE
    saveErrors(request, errors);
    return load(mapping, actionForm, request, response);
    }
    return load(mapping, actionForm, request, response);
    }
    }



    pour charger ta page appele creeEmploye.do.dispatch=load

    pour sauver creeEmploye.do.dispatch=save

    regarde sur http://java.developpez.com/faq/strut...dispatchAction

    Voila l'ideee general, mais je te conseil de faire un forward display load,..
    (regarde gestcv).

    Angelo

  6. #26
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Points : 39
    Points
    39
    Par défaut
    Bonjour tout le monde !
    je me permets de participer à cette importante conversation.
    pour moi, j'utilise la même méthode que "gregounet" (c-a-d initialiser le formulaire avec des données de la base dans le reset()) Mais j'ai rencontré un problème : en faite quand j'appelle mon formulaire une deuxiéme fois (par monfromulaire.do) ce dernier ne s'affiche pas du tout.
    le problème vient du faite que l'attribut passé dans la méthode reset (request.setAttribute("liste",liste)) est perdu.
    => Ce que j'ai compris, c'est que le reset sert à initialiser le formulaire juste pour la première fois. sinon pour le faire à chaque rechargement il faut utiliser une Action qui s'execute avant.
    le choix de ActionDispatch dans ce cas serait tres intéressant car il te permet atravers ses méthodes d'utiliser ton Action avant et apres la validation de ton formulaire.

  7. #27
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    La methode reset est appel a chaque appel de de creation du formulaire.
    En gros si tu as un formulaire en session, il ne sera crée qu'une seule et unique fois.

    S'il est en request il sera recrée des que le request ne sera plus valide.

    Après si tu doit recharger ou non ton formulaire en fonction d'action de l'utilisateur changement de valeur d'une combo, bouton, etc, alors un dispatchAction voir un lookupDispatchAction sont très bien.

    Perso j'utilise souvent le lookupDispatchAction avec en plus toutes les fonctionnalités du dispatchAction
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  8. #28
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    merci beaucoup pour ces explications, c très clair maintenant!

    le hic c'est que j'essaye depuis 20mn d'implementer le dispatchAction sans succes et que je viens de me rendre compte qua ma version de struts (1.2.9) ne le gère pas... bref, pour pas bousculer le serveur de prod, jvais utiliser une autre solution compatible au framework 1.2.9

    mais a titre perso, je prend bonne note

  9. #29
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par don'de
    en faite quand j'appelle mon formulaire une deuxiéme fois (par monfromulaire.do) ce dernier ne s'affiche pas du tout.
    le problème vient du faite que l'attribut passé dans la méthode reset (request.setAttribute("liste",liste)) est perdu.
    => Ce que j'ai compris, c'est que le reset sert à initialiser le formulaire juste pour la première fois. sinon pour le faire à chaque rechargement il faut utiliser une Action qui s'execute avant.
    et bien en ayant mis le scope en request, plusieurs chargement ne me pose pas de soucis, peut être cela vient-il d'ailleurs

  10. #30
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    1.2.9 ne gere pas disptachAction alors que 1.1 si??? C'est bizarre, t'as vu ca ou?

    Montre moi ton dispatchAction et dit moi ce qu'il ne vas pas.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  11. #31
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Points : 39
    Points
    39
    Par défaut
    merci "maxf1" c plus claire mnt. par contre je vois que l'utilisation du DispachAction devient obligatoire pour notre cas. car si je change le scope de mon formulaire en request, les utilisateurs perderont leurs paramètres une fois ils valident le formulaire (un cas pas souhaité !).
    l'utilisation d'autres propriétés dans le bean comme a indiqué "c_nvy" reste aussi une solution mais perso je crois que le dispatchAction est plus propre.
    j'aimerai bien avoir la difference entre dispachtAction et lookupDispatchAction

  12. #32
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Si jamais il valide et que tu les redirige vers la meme action alors ton form ne sera pas re-initiliasé vu ton form sera dans le request, il ira le chercher d'abord dans le request.

    Maintenant comme je dis, moi j'aime bien utilisé dispatchAction pour mettre a jour des valeurs en fonction d'une action utilisateur sur un objet de mon forme:
    on coche une radio, un change le combobox, cliquer un bouton pour valider un bout du formulaire et accéder au reste, bref tout ce que l'on souhaite faire. Ca depend aussi de ce que tu veux faire.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  13. #33
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    GestCV est base sur Struts 1.2.8 et il gere les DispatchAction.
    Et je vais me repeter, mais ne faite jamais d'acces aux donnees dans votre formulaire Struts. Si vous faites ca, votre application va vite devenir une usine a gaz. Le plus difficile dans une application, c'est de gerer les erreurs et le plus facile c'est de gerer le cas normal. Si vous avez une erreur quelqonque lors de l'acces a vos donnees et que vous avez mis ca dans votre formulaire, cela va etre tres difficile de gerer l'erreur.

    De plus ca n'est pas le role du formulaire de gerer les acces aux donnees. Il est important de separer votre application en couche qui ont chacun leur role (Action -> Service ->DAO ). D'une part cela permet de tester chacune des couches separement ( ca evite de lancer le serveur a chaque fois que vous voulez faire des tests sur vos acces aux donnees (voir junit)).

    Angelo

  14. #34
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    je suis tout a fait d'accord sur le principe de laisser les access bdd au modele et le formulaire a la vue

    pour dispatchAction toutes m es excuses, j'ai tout simplement cherché DispatchAction dans la classe action et non pas actions

    j'essaye de mettre ça en route, pour le moment pas de problemes de compil mais une erreur d'execution sur un bean que j'ai suremant mal delcaré quelques part

  15. #35
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Et je vais me repeter, mais ne faite jamais d'acces aux donnees dans votre formulaire Struts. Si vous faites ca, votre application va vite devenir une usine a gaz. Le plus difficile dans une application, c'est de gerer les erreurs et le plus facile c'est de gerer le cas normal. Si vous avez une erreur quelqonque lors de l'acces a vos donnees et que vous avez mis ca dans votre formulaire, cela va etre tres difficile de gerer l'erreur.

    De plus ca n'est pas le role du formulaire de gerer les acces aux donnees. Il est important de separer votre application en couche qui ont chacun leur role (Action -> Service ->DAO ). D'une part cela permet de tester chacune des couches separement ( ca evite de lancer le serveur a chaque fois que vous voulez faire des tests sur vos acces aux donnees (voir junit)).
    Au que oui acces base de donnée INTERDITE (par moi) dans les formulaires. Les initialisations des forms dans les formulaires sont des trucs tout simple normalement, genre qu'elle est le radio button par defaut ou quelque chose dans le style. S'il y a des valeurs de la BDD => passé par une action qui se chargera de l'initialisation.

    Tout à faire pour les couches +1 avec toi, ca permet de faire de jolis tests unitaire, avec Junit, StrutsTestCase, HttpUnit, JMeter, etc......(bon courage, )
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  16. #36
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    bon le probleme se situe dans ma jsp... mon arraylist listeQualification semble ne pas être trouvable...

    pour info,
    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
    <struts-config>
        <form-beans>
            <form-bean name="QualificationAF" type="com.myapp.struts.QualificationAF"/>
            <form-bean name="EmployeAF" type="com.myapp.struts.EmployeAF"/>
        </form-beans>
     
        <global-exceptions>
     
        </global-exceptions>
     
        <global-forwards>
            <forward name="ListQualification" path="/ListQualification.do"/>
            <forward name="welcome"  path="/Welcome.do"/>
        </global-forwards>
     
        <action-mappings>
            <action name="EmployeAF" path="/creeEmploye" scope="request" type="com.myapp.struts.creeEmployeA" validate="false" parameter="dispatch">
                <forward name="success" path="/CreeEmploye.jsp"/>
            </action>
            <action input="/CreeQualification.jsp" name="QualificationAF" path="/creeQualification" scope="request" type="com.myapp.struts.creeQualificationA">
                <forward name="success" path="/CreationSuccess.jsp"/>
                <forward name="error" path="/CreationError.jsp"/>
            </action>
            <action path="/ListQualification" scope="request" type="com.myapp.struts.listQualificationA">
                <forward name="success" path="/ListQualification.jsp"/>
            </action>
            <action path="/Welcome" forward="/welcomeStruts.jsp"/>
        </action-mappings>
    ma classe creeEmployeA:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    public class creeEmployeA extends DispatchAction {
     
        /* forward name="success" path="" */
        private final static String SUCCESS = "success";
        ConnectionPoolMgr poolManager = ConnectionPoolMgr.getInstance();
        private SysLog syslog;
     
        /**
         * This is the action called from the Struts framework.
         * @param mapping The ActionMapping used to select this instance.
         * @param form The optional ActionForm bean for this request.
         * @param request The HTTP Request we are processing.
         * @param response The HTTP Response we are processing.
         * @throws java.lang.Exception
         * @return
         */
        public ActionForward load(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
            Statement stmt;
            this.syslog = new SysLog("personnel");
            ResultSet rset;
            ArrayList listeQualification = new ArrayList();
            QualificationAF qualification;
     
    //        String user_soc = request.getParameter("user_soc");
            String user_soc = "PERSONNEL";
     
            try{
                Connection conn = poolManager.getConnection("xxxxx");
                stmt = conn.createStatement();
                StringBuffer sql = new StringBuffer(1048);
     
                sql.delete(0,sql.length());
                sql.append("SELECT * FROM \"" + user_soc + "\".QUALIFICATION");
     
                this.syslog.logTrace("-->Listing des équipe (Qualification)");
                rset = stmt.executeQuery (sql.toString());
                while(rset.next()){
                    qualification = new QualificationAF();
                    qualification.setCle(rset.getString(1));
                    qualification.setCategorie(rset.getString(2));
                    qualification.setCoef(rset.getString(3));
                    qualification.setPosition(rset.getString(3));
                    listeQualification.add(qualification);
                }
     
                rset.close();
                poolManager.freeConnection("xxxxx", conn);
            }
            catch (Exception e) {
                this.syslog.logError("Impossible d'executer la requete de creation (Qualification)");
                this.syslog.logError("Motif : "+e);
                this.syslog.logError("");
            }
            request.setAttribute("listeQualification",listeQualification);
            return mapping.findForward(SUCCESS);
        }
     
        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
            return mapping.findForward(SUCCESS);
     
        }
    }
    et dans ma jsp, mon combo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="qualification">
                    <html:options collection="listeQualification" property="cle" labelProperty="categorie"/>
                 </html:select>
    et quand je pointe sur creeEmploye.do.dispatch=load j'obtiens une erreur 404...

  17. #37
    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
    Merci d'ouvrir une nouvelle discussion concernant le problème de DispatchAction parce que la discussion actuelle est déjà bien assez longue.
    Modératrice Java - Struts, Servlets/JSP, ...

  18. #38
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 46
    Points
    46

  19. #39
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    L'URL a appeler est creeEmploye.do?dispatch=load.
    Et je me permets de faire des petites remarques sur ton code :

    - je te conseille de te faire une rgele de nommage sur les noms de test actions, form et JSP, parce que ca devient vite illisible quand tu as plein d'actions/forms JSP dans ton appli. Voici mes conventions :

    * Tout ce qui est Formulaire se termine par Form
    * Tout ce qui est Action se termine par Action
    * Le formulaire/action/JSP on le meme nom (classe + struts-config)
    * les actions sont dans le package actions et formulaire dans forms

    Ce qui donnerait :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <struts-config>
        <form-beans>   
            <form-bean name="EmployeAFForm" type="com.myapp.forms.EmployeAFForm"/>
        </form-beans>
     
    <action-mappings>
            <action name="EmployeAFForm" path="/employeAF" scope="request" type="com.myapp.actions.EmployeAFAction" validate="false" parameter="dispatch">
                <forward name="success" path="/employeAF.jsp"/>
            </action>
    </struts-config>
    Quand tu recherches (par exemple avec Eclipse (Ctrl+Shift+R) les composants (JSP, Action, Form,...) EmployeAF, tu sais que ca commence par EmployeAF.

    Concernant la gestion d'erreur, il faut absolume,nt que tu mettes en place un mecanisme qui gere les erreus des le debut de ton application. Si tu veux tu peux t'inspirer de ce que j'ai fait sur gestcv (Classe de base DispatchAction qui catche un type d'exception et qui construit une erreur Struts autmatiquement).

    Sinon si tu ne le fais pas tout de suite, t'es sur que ca va etre horrible de revenir sur tout le code qui a ete fait. Parce ce qu'il n'y a rien de plus horrible d'avoir une erreur du type (Erreur 500, ou Veuillez contacter votre Administrateur) et que tu soies incapable de detecter le cas d'erreur.

    Met en place des Exception (Exception Metier, techniques,...) Dans GestCV c'est ce que j'ai fait, j'ai un type d'Exception Metier.

    Bon courage

    Angelo

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [ZF 1.10] faire appel d'une action
    Par oracle12 dans le forum MVC
    Réponses: 1
    Dernier message: 23/06/2011, 17h07
  2. appel a une action zend ds une formulaire phtml
    Par moukit233 dans le forum Zend Framework
    Réponses: 3
    Dernier message: 30/11/2010, 12h15
  3. appel d'une Action sans Formulaire
    Par don'de dans le forum Struts 1
    Réponses: 8
    Dernier message: 21/03/2007, 15h48
  4. Réponses: 4
    Dernier message: 27/04/2004, 14h45

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