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 :

Utiliser DynaActionForm pour un formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Fondateur
    Inscrit en
    Octobre 2002
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fondateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 445
    Points : 503
    Points
    503
    Par défaut Utiliser DynaActionForm pour un formulaire
    Bonjour,

    Je débute avec struts et après quelques difficultés pour la configuration, je suis enfin arrivé à faire tourner quelques exemples basiques d'applications .

    J'ai vu qu'on pouvait utiliser la classe DynaActionForm pour gérer des formulaires sans avoir à créer l'ensemble des getters / setters à la main comme on doit le faire avec ActionForm.

    J'ai donc fait les configurations suivantes :

    - fichiers struts-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
     
    	<form-beans>
    		<form-bean name="frmPersonne" type="fr.personne.PersonneDynaForm" scope="session">
    			<form-property name="nom" type="java.lang.String" initial=""/>
    			<form-property name="age" type="java.lang.String" initial=""/>
    		</form-bean>
    	</form-beans>
     
    ...
    Dans ce fichier j'ai défini mon formulaire frmPersonne avec ses 2 champs nom et age.


    - classe PersonneDynaForm pour gérer ce formulaire :

    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
     
     
     
    package fr.personne;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.DynaActionForm;
     
    public class PersonneDynaForm extends DynaActionForm{
     
    	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
     
    		ActionErrors erreurs = new ActionErrors();
    		String nom = (String) this.get("nom");
    		String age = (String) this.get("age");
     
    		if(nom == null  ||  nom.trim().equals("")){
    			erreurs.add("nomvide", new ActionError("personne.formulaire.nom.vide"));
    		}
     
    		if(age == null  ||  age.trim().equals("")){
    			erreurs.add("agevide", new ActionError("personne.formulaire.age.vide"));
     
    		}else{
     
    			if(!age.matches("^\\s*\\d+\\s*$"))
    				erreurs.add("ageincorrect", new ActionError("personne.formulaire.age.incorrect", age));
     
    		}
     
    		return erreurs;
     
    	}
     
    }
    - la page jsp dans laquelle est affiché le formulaire frmPersonne :

    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
     
     
    ...
     
    	<body>
    		<h2>Formulaire - Personne</h2>
    		<hr>
    		<html:form action="/main" name="frmPersonne" type="fr.personne.PersonneDynaForm">
    		<table>
    			<tr>
    				<td>Nom</td>
    				<td><html:text property="nom"/></td>
    			</tr>
    			<tr>
    				<td>Age</td>
    				<td><html:text property="age"/></td>
    			</tr>
    		</table>
    		<br/>
    		<html:submit value="Envoyer"/>&nbsp;-&nbsp;<html:reset value="Rétablir"/>&nbsp;-&nbsp;<html:button property="btnEffacer" value="Effacer" onclick="javascript:effacer();"/>
    		</html:form>
    		<br/>
    	</body>
     
    ...

    Lorsque je tente d'accéder à ma page où se trouve le formulaire frmPersonne, j'obtiens une erreur me disant en gros qu'il n'arrive pas accéder à la propriété nom du formulaire.

    Cela est normal en fait car le controleur doit tenter d'utiliser la propriété nom puis age de PersonneDynaForm mais ces propriétés n'existent pas encore à ce moment là s'il y a une erreur.

    Comment doit je procéder pour configurer mon formulaire dans la page jsp ?

    Merci d'avance de votre aide.

    Sylvain
    Développeur Java / Android.
    The Truth About Bitcoin : https://www.the-truth-about-bitcoin.com/
    In Bitcoin We Trust : https://inbitcoinwetrust.substack.com
    Retrouvez mes Apps Android : https://play.google.com/store/apps/d...01024188312025
    Tout sur le Bitcoin, la Blockchain et les Altcoins : https://www.toutsurlebitcoin.fr
    Devenez une meilleure de vous-même jour après jour : https://www.jedeviensmeilleur.fr

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Essaie avec ça, ça risque de mieux marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		String nom = this.getString("nom");
    		String age = this.getString("age");
    Cela est normal en fait car le controleur doit tenter d'utiliser la propriété nom puis age de PersonneDynaForm mais ces propriétés n'existent pas encore à ce moment là s'il y a une erreur.
    Si tu regardes le schéma d'événements du contrôleur frontal de Struts, tu t'apercevras qu'il est IMPOSSIBLE que le contrôleur travaille avec un Bean non instancié.
    Le RequestProcessor crée l'ActionForm(ou le DynaActionForm) si nécessaire.
    Il le valide
    C'est ensuite qu'il s'occupe des "Actions"

  3. #3
    Membre confirmé
    Homme Profil pro
    Fondateur
    Inscrit en
    Octobre 2002
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fondateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 445
    Points : 503
    Points
    503
    Par défaut
    C'est ce que j'avais compris mais ça ne se passe comme ça apparemment...

    Pour les méthodes, getString n'existe pas. J'ai que la méthode get sans PersonneDynaForm (qui hérite de DynaActionForm).
    Développeur Java / Android.
    The Truth About Bitcoin : https://www.the-truth-about-bitcoin.com/
    In Bitcoin We Trust : https://inbitcoinwetrust.substack.com
    Retrouvez mes Apps Android : https://play.google.com/store/apps/d...01024188312025
    Tout sur le Bitcoin, la Blockchain et les Altcoins : https://www.toutsurlebitcoin.fr
    Devenez une meilleure de vous-même jour après jour : https://www.jedeviensmeilleur.fr

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Tu n'as pas de méthode getString sur ta classe DynaActionForm ???
    Tu utilises quelle version de Struts ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Fondateur
    Inscrit en
    Octobre 2002
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fondateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 445
    Points : 503
    Points
    503
    Par défaut
    Citation Envoyé par ep31 Voir le message
    Tu n'as pas de méthode getString sur ta classe DynaActionForm ???
    Tu utilises quelle version de Struts ?
    J'utilise Struts 1.1 (pas le choix sinon j'aurais pris la dernière version stable plutôt). Et effectivement je n'ai pas de méthode getString sur la classe DynaActionForm.
    Développeur Java / Android.
    The Truth About Bitcoin : https://www.the-truth-about-bitcoin.com/
    In Bitcoin We Trust : https://inbitcoinwetrust.substack.com
    Retrouvez mes Apps Android : https://play.google.com/store/apps/d...01024188312025
    Tout sur le Bitcoin, la Blockchain et les Altcoins : https://www.toutsurlebitcoin.fr
    Devenez une meilleure de vous-même jour après jour : https://www.jedeviensmeilleur.fr

  6. #6
    Membre confirmé
    Homme Profil pro
    Fondateur
    Inscrit en
    Octobre 2002
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fondateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 445
    Points : 503
    Points
    503
    Par défaut
    personne d'autre n'a d'idées ?
    Développeur Java / Android.
    The Truth About Bitcoin : https://www.the-truth-about-bitcoin.com/
    In Bitcoin We Trust : https://inbitcoinwetrust.substack.com
    Retrouvez mes Apps Android : https://play.google.com/store/apps/d...01024188312025
    Tout sur le Bitcoin, la Blockchain et les Altcoins : https://www.toutsurlebitcoin.fr
    Devenez une meilleure de vous-même jour après jour : https://www.jedeviensmeilleur.fr

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Désolé, je n'ai jamais utilisé la première version de Struts !
    Tente de mettre des traces (avec les dates, secondes et millisec) dans tes classes d'Action et Bean et voit comment le process se déroule.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/07/2011, 11h32
  2. Réponses: 10
    Dernier message: 02/11/2007, 14h36
  3. Quelle méthode utiliser pour un formulaire
    Par sam01 dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2006, 16h42
  4. Comment utiliser la meme table pour plusieurs formulaires
    Par pacodelareunion dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2005, 15h17
  5. Quel langage utiliser pour des formulaires ?
    Par le_ben dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 13/10/2005, 14h08

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