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][formulaire][validation][débutant] comment faire ?


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 17
    Points
    17
    Par défaut [struts][formulaire][validation][débutant] comment faire ?
    bonjour à tous,
    je débute dans struts et je souhaiterai faire un formulaire dynamique avec validation.
    donc j'ai lu pas mal de chose mais je fini par m'embrouiller et donc je demande votre aide

    J'ai vu la classe DynaValidatorActionForm, et vu le nom elle à l'air de tout faire mais c'est peut être superflu...je ne sais pas...

    Je voulais donc savoir comment et quelle classe faire pour le formulaire dynamique qui gère la validation, et si je devais changer les fichiers existants.

    Je vous met les fichiers utiles

    ----------------struts-config.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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <struts-config>
     
      <form-beans>
            <form-bean name="SearchForm" type="org.apache.struts.validator.DynaValidatorActionForm">
                    <form-property name="produit" type="java.lang.String" initial=""/>
                    <form-property name="date" type="java.lang.String" initial=""/>
    ...
            </form-bean>
      </form-beans>
      <action-mappings>
            <action
                    path="/main"
                    name="SearchForm"
                    validate="true"
                    scope="session"
                    input="/pages/erreur.jsp"
                    type="org.apache.struts.validator.DynaValidatorActionForm">
            </action>
    ...
       </action-mappings>
     
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
      </plug-in>
    </struts-config>
    -------------------------validation.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
    16
    17
    18
    19
    20
    21
    22
    23
    <form-validation>
            <global>
                    <constant>
                            <constant-name>chaine</constant-name>
                            <constant-value>^&#91;a-zA-Z&#93;*$</constant-value>
                    </constant>
            </global>
            <formset>
                    <form name="SearchForm">
                            <field property="produit" depends="required">
                                    <arg0 key="SearchForm.produit"/>
                            </field>
                            <field property="date" depends="required,mask">
                                    <arg0 key="SearchForm.date"/>
                                    <var>
                                            <var-name>datePattern</var-name>
                                            <var-value>dd/MM/yyyy</var-value>
                                    </var>
                            </field>
    ...
                    </form>
            </formset>
    </form-validation>
    ----------------------------formulaire.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
    23
    <html&#58;form action="/main" name="SearchForm" type="org.apache.struts.validator.DynaValidatorActionForm">
    <table widht="100%">
            <tr>
            <td width="10%">&nbsp;</td>
            <td width="45%">
                    <table>
                            <tr>
                                    <td>Produit &#58;<td>
                                    <td><html&#58;select name="SearchForm" property="produit">
                                            <html&#58;options name="SearchForm" property="valeursProduits"/>
                                        </html&#58;select>
                                    </td>
                            </tr>
                            <tr>
                                    <td>Date &#58;</td>
                                    <td><html&#58;text name="SearchForm" property="date" /></td>
                            </tr>
    ...
                    </table>
            </td>
            </tr>
    </table>
    </html&#58;form>
    Je suis ouvert à toute suggestion.
    Merci.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    bonjour,

    pour la validation des formulaires, je te conseille le site d'IBM (en anglais), avec une mise en oeuvre en guise d'explication.
    ==>http://www-128.ibm.com/developerwork.../fung_yu2.html

    Pour résumer en quelques mots il faut étendre une classe ValidatorForm à la place des actionForm, réaliser le mapping du formulaire comme tu l'as fait dans le fichier validation.xml et ça devrait marcher.

    Voila bon courage !

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    merci, mais je pensais qu'avec un formulaire dynamique comme j'essaye de faire il n'y avait pas besoin d'utiliser javascript pour le valider.
    en fait à la fin de mon formulaire j'ai oublié de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html&#58;submit>Envoyer</html&#58;submit>
    j'ai vu des exemples ou ca devait marcher.

    qu'en pensez vous ?
    dans ce cas (formulaire dynamique+validation) faut-t-il que j'utilise une classe qui hérite de DynaValidatorActionForm ou non ?

    merci.

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    bonjour

    Au niveau de ton struts_config :
    Classe de base : DynaValidatorForm au lieu de DyanValidatorActionForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form-bean name="SearchForm" type="org.apache.struts.validator.DynaValidatorForm">
                    <form-property name="produit" type="java.lang.String" initial=""/>
                    <form-property name="date" type="java.lang.String" initial=""/>
    ...
    dans ton struts_config, au nveau de la définition de ton action,
    je ne comprend pas pourquoi le type de ton action est a org.apache.struts.validator.DynaValidatorActionForm
    Normalement, ici le type correspond a l'action qui sera appelé lorsque les données auront été validé ( exemple : ...SearchFormAction)

    Ensuite au niveau de ta JSP
    il ya plusieurs chose a faire :

    A la défintion de ton formulaire tu doit avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html&#58;form action="main" name="SearchForm" onsubmit="return validateSearchForm&#40;this&#41;"/>
    ...
    </html&#58;form>
    Avant la balise </html:html> tu doit ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html&#58;javascript formName="SearchForm"/>
    Voila normalement ca devria marché nickel
    Bon courage

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Re
    j'avai oublier :
    au niveau de ton Action ( exemple SearchFormAction)

    Celle ci étend Action

    tu doit avoir :
    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
     
    public class SearchFormAction extends Action
    &#123;
    ...
     public ActionForward execute&#40;ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response&#41; throws IOException, ServletException 
        &#123;
    ....
     
    //caster le formulaire recu par l'action en DynaValidatorForm
     
    DynaValidatorForm dynaform = &#40;DynaValidatorForm&#41; form;
    String produit=null;
     
    if&#40;dynaform!=null&#41;
    &#123;
    //récup des données du form
    produit=dynaform.getString&#40;"produit"&#41;;
    ...
    &#125;
    //suite traitement
    ...
    &#125;
    &#125;
    Avec tout ca tu devrai y arriver sans probleme
    a+

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    bonjour et merci,
    j'ai essayé de modifier mon code avec ce que tu m'a donné.
    au niveau de la classe j'ai :

    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
    package struts.form;
    import java.io.*;
    import servlet.*;
    import servlet.http.*;
    import org.apache.struts.action.*;
     
    public class SearchFormAction extends Action &#123;
     
            public ActionForward execute&#40;ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response&#41;
            throws IOException, ServletException
            &#123;
                    String produit = null;
                    String date = null;
     
                    DynaActionForm dynaform = &#40;DynaActionForm&#41; form;
                    produit = dynaform.getString&#40;"produit"&#41;;
                    date = dynaform.getString&#40;"date"&#41;;
     
                    return mapping.findForward&#40;"reponse"&#41;;
            &#125;
    &#125;
    Au chargement de la page rien ne s'affiche et le log de tomcat me dit : /pages/mdSearch.jsp(13,0) L'attribut name est incorrect pour le tag form d'après la TLD indiquée
    effectivement quand je regarde la tld (struts-html.tld) il n'y a pas d'attribut name pour la balise form...
    donc je l'enlève ; en plus dans le lien de bomber au dessus ils n'en mettaient pas non plus, alors j'ai la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html&#58;form action="/main" onsubmit="return validateSearchForm&#40;this&#41;">
    et là ca devrait fonctionner puisque le nom "SearchForm" de mon formulaire est le même dans struts-config, validation.xml, et dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html&#58;javascript forName="SearchForm"/>
    or, ca ne fonctionne toujours pas et là le log tomcat dit : /pages/mdSearch.jsp(58,0) L'attribut forName est incorrect pour le tag javascript d'après la TLD indiquée

    et pourtant l'attribut forName est bien dans la tld cette fois...

    merci pour vos comentaires et solutions.
    ++

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Bonjour
    tu as mis
    forName="SearchForm" au lieu de formName="SearchForm"

    Attention au faute de frappe
    a+

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    arf, merci !
    je nettoie mes lunettes de suite c'est sûrement ca :p

    thx tout le monde

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/08/2005, 13h19
  2. [Parser] [Débutant] Comment faire !
    Par enigma dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 23/02/2005, 02h57
  3. [Débutant] Comment faire un calendrier HTML
    Par le lynx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/10/2004, 17h19
  4. [Débutant] Comment faire un import de package ?
    Par MASSAKA dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 07/05/2004, 10h45
  5. [struts][validation][Timestamp] comment faire?
    Par anas.rih dans le forum Struts 1
    Réponses: 6
    Dernier message: 17/04/2004, 00h59

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