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 ][ Validator ]problème d'affichage


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut [ Struts ][ Validator ]problème d'affichage
    bonjour,

    J'ai un pblm avec mon Validator car je n'arrive pas à lui faire afficher les messages voulus. En effet il affiche rien du tout....

    Voici les bouts de codes que j'ai modifiés pour "installer" le validator:

    struts-config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <plug-in className="org.apache.struts.tiles.TilesPlugin">
            <set-property property="definitions-config" value="/WEB-INF/gabaritConges-tiles.xml" />
            <set-property property="definitions-debug" value="2" />
            <set-property property="definitions-parser-details" value="2" />
            <set-property property="definitions-parser-validate" value="true" />
        </plug-in>
        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
        </plug-in>
    validator-rules.xml :
    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
    <form-validation>
    <global>
     
    <validator name="required"
            classname="org.apache.struts.validator.FieldChecks"
            method="validateRequired"
            methodParams="java.lang.Object,
                     org.apache.commons.validator.ValidatorAction,
                     org.apache.commons.validator.Field,
                     org.apache.struts.action.ActionMessages,
                     javax.servlet.http.HttpServletRequest"
            msg="errors.required"/>
     
    </global>
    </form-validation>
    validation.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form-validation>
    <formset>   
     
    <form name="loginForm">
          <field property="login" depends="required">
        </field>
    </form>   
     
    </formset>   
    </form-validation>
    login.jsp:
    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
    <html:form action="/login.do?event=traitement"  onsubmit="return validateLoginForm(this);">
    <table width="500"  border="0" cellspacing="0" cellpadding="0" align="center">
      <tr>
        <td width="115">Login:</td>
        <td width="215">
          <html:text property="login" />
        <html:errors property="login"/>
        </td>
      </tr>
      <tr>
        <td>Mot de passe:</td>
        <td>
          <html:password property="password" />
            <html:errors property="password"/>
        </td>
      </tr>
       <tr>
        <td colspan="2" align="center">
        <html:submit property="submit"/>
      </tr>
    </table>
    </html:form>
    entête du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class LoginForm extends ValidatorForm {
    méthode faisant le traitement dans l'action:
    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
        public ActionForward traitement(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception
        {
            LoginForm loginForm = (LoginForm)form;
     
            ActionErrors erreurs = new ActionErrors();
            BeanLogin retour = new BeanLogin();
            retour.setLogin(loginForm.getLogin());
            retour.setPassword(loginForm.getPassword());
            System.out.println("login: "+loginForm.getLogin());
            System.out.println("Password: "+loginForm.getPassword());
            retour = LoginServices.getInstance().VerifLogin(loginForm.getLogin(),loginForm.getPassword());
     
            if (retour.getNoDossierPers() != null)
            {    
                HttpSession httpSession = request.getSession(true);            
                httpSession.setAttribute("login",retour);
                //ok il existe on charge les données et on les mets en session
                return mapping.findForward("success");
            }
            else{
                /**/
                erreurs.add("password",new ActionMessage("erreur.login.action.login.unknown"));                            
                saveMessages(request,erreurs);
                return mapping.findForward("echec");
            }
        }
    Si quelqu'un voit une erreur (qui doit y etre c sur !!) ou peut faire avancer mon scmilblick merci d'avance

  2. #2
    SrK
    SrK est déconnecté
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Points : 83
    Points
    83
    Par défaut
    as tu mis le <html:javascript formName="loginForm" />
    dans le header de ton jsp ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    non mais normalement il me semble qu'il n'y en a pas besoin....

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    je pense que j'aime un probleme de Cast dans l'action.....

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Citation Envoyé par sebus
    non mais normalement il me semble qu'il n'y en a pas besoin....
    Ca dépend si tu as généré une fois le Javascript et que tu l'inclues ensuite.
    Sinon tu n'auras pas toutes les fonctions JS de vérification proposées par le validator.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    quand je disais que je pensais que j'en avais pas besoin, je voulais dire que pour l'instant je n'utilise pas de fonction écrite en java script dans mon validateur, j'utilise seulement des fonctions deja existantes (ici requiered).
    Mais par contre je garde le conseil sous le coude car je risque de devoir faire du javascript surement un de c'es 4....

    En fait maintenant quand je ne rempli pas mon champ, j'ai rien qui s'affiche sur la jsp (le message d'erreur n'apparait pas), mais par contre quand le champ est rempli, le traitement de la page est lancé mais je suis bloqué par une exception de type ClassCast qui se situe a priori dans l'action (au moment de récupérer le form)

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    As-tu vérifié que ton messageResources.properties était bien dans WEB-INF/src et que la clé "errors.required" est bien présente ?

    Cela pourrait expliquer pourquoi le message ne s'affiche pas.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    justement j'étais en train de tout vérifier, et mon messageResources est bien défini dans le struts config avec le bon chemin et la clé errors.required est bien présente...........

  9. #9
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    salut c'est peut etre bete ce que je vais dire mais csait-on jamais.
    2 choses :

    1. je remarque que tu implemente ValidatorForm. J'ai eu ce probleme et j'ai du implementer ValidatorActionForm.

    2. tu n'indique pas le nom du formBean dans tes elements du formulaire. Tu devrais rajouter name="loginForm".

    A verifier...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Je te rassure, c'est forcément une connerie qui traîne dans le code, mais ou ....................

    Pour ton 2) romdelf, je vois pas trop ce que tu veux dire, car si je rajoute un attribut name dans <html:text je vais avoir une erreur car il ne connaitra pas le nom (il le trouvera dans aucune scope)
    Sinon je test ValidatorActionForm

  11. #11
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    Pour mon 2, je t'explique :
    tu devrais avoir dans ton struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<form-beans>
    		<form-bean name="loginForm" type="xxxxx.LoginForm">
    		</form-bean>
    	</form-beans>
     
    et dans le action mapping :
            <action path="/login" type="xxx.xxxxAction" name="loginForm" >
    le name représentant ton FormBean...

    As tu fais autrement ?

    Peux tu nous mettre ton struts-config stp et surtout ton action login.do?
    Thanks

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    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
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    <struts-config>
     
        <!-- ========== Data Source Configuration =============================== -->
        <data-sources />
     
        <!-- ========== Form Bean Definitions ================================== -->
        <form-beans>
            <form-bean name="loginForm" type="com.conges.form.LoginForm">
                <form-property name="login" type="java.lang.String" />
                <form-property name="password" type="java.lang.String" />
            </form-bean>
            <form-bean name="demandeForm" type="com.conges.form.DemandeForm" />
            <form-bean name="planningForm" type="com.conges.form.PlanningForm" />
            <form-bean name="chargeHebdoForm" type="com.conges.form.ChargeHebdoForm" />
            <form-bean name="saisieChargeHebdoForm" type="com.conges.form.SaisieChargeHebdoForm" />
            <form-bean name="choixAgentForm" type="com.conges.form.ChoixAgentForm" />
            <form-bean name="majSoldeForm" type="com.conges.form.MajSoldeForm" />
            <form-bean name="saisieJourParticulierForm" type="com.conges.form.SaisieJourParticulierForm" />
            <form-bean name="absenceExceptionnelleForm" type="com.conges.form.AbsenceExceptionnelleForm" />
        </form-beans>
     
        <!-- ========== Global Exception Definitions ============================== -->
        <global-exceptions />
     
        <!-- ========== Global Forward Definitions =============================== -->
        <global-forwards>
            <forward name="informationAgent" path="/informationAgent.do?event=init" />
     
            <forward name="demande" path="/demande.do?event=init" />
            <forward name="demandeParam" path="/demande.do?event=annulerDemande" />
     
            <forward name="planning" path="/planning.do?event=init" />
     
            <forward name="chargeAnnuelle" path="/chargeAnnuelle.do?event=init" />
            <forward name="chargeAnnuelleParam" path="/chargeAnnuelle.do?event=traitement" />
            <forward name="chargeAnnuelleDate" path="/chargeAnnuelle.do?event=traitementDate" />
     
     
            <forward name="planningPeriode" path="/chargeHebdo.do?event=init" />
            <forward name="saisieChargeHebdo" path="/saisieChargeHebdo.do?event=init" />
            <forward name="validation" path="/validation.do?event=init" />
            <forward name="choixAgent" path="/choixAgent.do?event=init" />
            <forward name="majSolde" path="/majSolde.do?event=init" />
            <forward name="absenceExceptionnelle" path="/absenceExceptionnelle.do?event=init" />
            <forward name="saisieJourParticulier" path="/saisieJourParticulier.do?event=init" />
            <forward name="gestionGenerale" path="/gestionGenerale.do?event=init" />
            <forward name="basculeAgent" path="/informationAgent.do?event=init" />
            <forward name="basculeAdmin" path="/saisieJourParticulier.do?event=init" />
        </global-forwards>
        <!-- ========== Action Mapping Definitions =============================== -->
     
        <action-mappings>
            <!-- ****** Connexion ****** -->
            <action
                attribute="LoginForm"
                input="conges.login"
                name="loginForm"
                parameter="event"
                path="/login"
                type="com.conges.action.LoginAction">
                <forward name="init" path="conges.login" />
                <forward name="success" path="/informationAgent.do?event=init" />
                <forward name="echec" path="conges.login" />
            </action>
     
            <!-- ****** Information ****** -->
            <action
                parameter="event"
                path="/informationAgent"
                type="com.conges.action.InformationAgentAction"
                validate="false">
                <forward name="init" path="conges.informationAgent" />
            </action>
     
            <!-- ****** Demande ****** -->
            <action
                attribute="demandeForm"
                input="/jsp/demande.jsp"
                name="demandeForm"
                parameter="event"
                path="/demande"
                type="com.conges.action.DemandeAction">
                <forward name="init" path="conges.demande" />
                <forward name="success" path="/confirmationDemande.do?event=init" />
                <forward name="echec" path="conges.demande" />
                <forward name="reload" path="/demande.do?event=init" />
            </action>
        </action-mappings>
     
        <!-- ========== Controller Configuration ================================ -->
        <controller />
     
        <!-- ========== Message Resources Definitions ============================ -->
     
        <!-- ========== Plug Ins Configuration ================================= -->
        <message-resources parameter="com.conges.ApplicationResources" />
        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
        </plug-in>
        <plug-in className="org.apache.struts.tiles.TilesPlugin">
            <set-property property="definitions-config" value="/WEB-INF/gabaritConges-tiles.xml" />
            <set-property property="definitions-debug" value="2" />
            <set-property property="definitions-parser-details" value="2" />
            <set-property property="definitions-parser-validate" value="true" />
        </plug-in>
    </struts-config>
    LoginAction

    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
    public class LoginAction extends DispatchAction {
     
        public ActionForward init(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            {
                System.out.println(" *** LANCEMENT JSP INDEX *** ");
                return mapping.findForward("init");
     
        }
     
        public ActionForward traitement(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception
        {
            LoginForm loginForm = (LoginForm)form;
     
            //ActionErrors erreurs = new ActionErrors();
            BeanLogin retour = new BeanLogin();
            retour.setLogin(loginForm.getLogin());
            retour.setPassword(loginForm.getPassword());
            System.out.println("login: "+loginForm.getLogin());
            System.out.println("Password: "+loginForm.getPassword());
            retour = LoginServices.getInstance().VerifLogin(loginForm.getLogin(),loginForm.getPassword());
     
     
            if (retour.getNoDossierPers() != null)
            {    
                HttpSession httpSession = request.getSession(true);            
                httpSession.setAttribute("login",retour);
                //ok il existe on charge les données et on les mets en session
                return mapping.findForward("success");
            }
            else{
                /**/
                //erreurs.add("password",new ActionMessage("erreur.login.action.login.unknown"));                            
                //saveMessages(request,erreurs);
                return mapping.findForward("echec");
            }
        }
    }

    Thanks surtout a toi de te pencher sur mon problème !!!!!

  13. #13
    Membre du Club Avatar de romdelf
    Profil pro
    Inscrit en
    Février 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 91
    Points : 62
    Points
    62
    Par défaut
    Si tu n'utilises pas de javascript, je pense qu'ils ont tout a fait raison de te dire de mettre <html:javascript formName="logonForm" /> dans ta jsp.

    C'est ce tag qui va faire que les methodes javascript (celles du validator-rules.xml) vont etre inserees dans ta page.
    Verifie dans ton source de ta page html, mais je suis sur que tu ne verras aucune methode javascript...

    Sinon, as tu essayé ma solution 2? (en mettant l'attribut name des champs + le name="loginForm" dans ton action?)
    peut etre faut il conjuguer ceci à ma solution 1 (extends ValidatorActionForm)

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Ca ......... c'est fait !!!!!!!!!

    Comme je le disais hier en début d'aprem et comme je le craignais (hé oui je suis débutant en struts donc les conneries à 2 balles c'est facile à faire...) mon problème provenait bien d'une connerie grosse comme moi c'est à dire une faute de frappe........

    si on regarde bien dans le struts-config, l'élément attribute de l'action commence par un L alors que l'alias commence par un l........................

    Et comme je ne savais pas à quoi servais justement l'attribut attribute je ne l'avais pas regardé de près...

    Si quelqu'un sais au moins en gros a quoi il sert, pourrait il me le préciser? Merci beaucoup à tous ceux qui m'ont aider et apporter des éléments de recherche

    et surtout pour finir: honte à moi

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

Discussions similaires

  1. [Struts Validator] probleme affichage des erreurs
    Par Morpheus2144 dans le forum Struts 1
    Réponses: 7
    Dernier message: 24/01/2006, 15h25
  2. [struts][validation][Timestamp] comment faire?
    Par anas.rih dans le forum Struts 1
    Réponses: 6
    Dernier message: 16/04/2004, 23h59
  3. [Struts-Validator] Gestion d'erreurs
    Par sylvain_neus dans le forum Struts 1
    Réponses: 14
    Dernier message: 09/04/2004, 15h15
  4. Réponses: 9
    Dernier message: 24/03/2004, 12h15
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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