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 sur plusieurs pages


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut formulaire sur plusieurs pages
    je souhaite faire un formulaire sur plusieurs pages.

    donc j'ai un premier formulaire 'loginForm.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
    24
    25
    26
     
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>
     
    <html:html>
    <head>
    <title>Page login</title>
    </head>
     
    <body>
     
    <html:form action="/Input" method="post">
     
    <nested:nest property="personne">
     
    Login <nested:text property="login" /><br />
    Mot de passe <nested:text property="mdp" /><br />
     
    <html:submit value="Soumettre"/>
     
    </nested:nest>
    </html:form>
     
    </body>
    </html:html>
    qui renvoie sur un deuxieme formulaire adresseForm.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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>
     
    <html:html>
    <head>
    <title>Page adresse</title>
    </head>
     
    <body>
     
    <nested:root name="loginForm">
     
    <html:form action="/InputAdresse" method="post">
     
    <nested:nest property="personne">
    Login : <bean:write name="loginForm" property="login" scope="request" /><br>
    Mot de passe : <bean:write name="loginForm" property="mdp" scope="request" /><br />
     
    <nested:nest property="adresse">
     
    Numero de rue : <nested:text property="numRue" /><br />
    Rue : <nested:text property="rue" /><br />
    Code postal : <nested:text property="codePostal" /><br />
    Ville : <nested:text property="ville" /><br />
     
    </nested:nest>
    </nested:nest>
     
    <html:submit value="Soumettre"/>
     
     
    </html:form>
    </nested:root>
     
    </body>
    </html:html>
    j'ai donc des balises emboitées pour représenter les objets qui contiennent les attributs des deux formulaires.

    L'objet 'Login' contient un objet 'Adresse'.

    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
    package technote.beans;
     
    import java.io.Serializable;
     
    public class Login implements Serializable {
     
    	private String login;
    	private String mdp;
    	private Adresse adresse = new Adresse();
     
    	public String getLogin() {
    		return login;
    	}
    	public void setLogin(String login) {
    		System.out.print("****** on passe dans setLogin(). ******");
    		this.login = login;
    	}
    	public String getMdp() {
    		return mdp;
    	}
    	public void setMdp(String mdp) {
    		System.out.print("****** on passe dans setMdp(). ******");
    		this.mdp = mdp;
    	}
     
    }
    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
    package technote.beans;
     
    import java.io.Serializable;
     
    public class Adresse implements Serializable {
     
    	private String numRue;
    	private String rue;
    	private String codePostal;
    	private String ville;
     
    	public String getCodePostal() {
    		return codePostal;
    	}
     
    	public void setCodePostal(String codePostal) {
    		this.codePostal = codePostal;
    	}
     
    	public String getNumRue() {
    		return numRue;
    	}
     
    	public void setNumRue(String numRue) {
    		this.numRue = numRue;
    	}
     
    	public String getRue() {
    		return rue;
    	}
     
    	public void setRue(String rue) {
    		this.rue = rue;
    	}
     
    	public String getVille() {
    		return ville;
    	}
     
    	public void setVille(String ville) {
    		this.ville = ville;
    	}
     
    }
    j'ai mappé dans le fichier de 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
    <?xml version="1.0" encoding="UTF-8"?>
    <struts-config>
      <form-beans>
        <form-bean name="loginForm" type="technote.actionform.LoginForm" />
      </form-beans>
      <action-mappings>
        <action path="/Input" 
        input="/pages/loginForm.jsp"  
        name="loginForm" 
        type="org.apache.struts.actions.ForwardAction" 
        parameter="/pages/adresseForm.jsp" 
        scope="request" />
        <action path="/InputAdresse" 
        name="loginForm" 
        input="/pages/adresseForm.jsp" 
        parameter="/pages/affiche.jsp" 
        scope="request" />
      </action-mappings>
      <message-resources parameter="MessageResources"/>
    </struts-config>
    Mais je vois pas bien comment créer le actionForm 'LoginForm.java' qui va bien. Dans un tuto, il instancient un objet Login, mais ce ne fonctionne pas bien:
    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
    package technote.actionform;
     
    import org.apache.struts.action.ActionForm;
    import technote.beans.Login;
     
    public class LoginForm extends ActionForm {
     
    	private Login personne = new Login();
     
    	public Login getPersonne() {
    		return this.personne;
    	}
     
    	public void setPersonne(Login personne) {
    		this.personne = personne;
    	}
    }
    j'ai une erreur qui me dit que je n'ai pas de getter pour le form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No getter method for property: "login" of bean: "loginForm"
    Est ce quelqu 'un peu m'aider pour avoir l'actionForm qui va bien ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    ajoute dans le LoginForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String getLogin(){
    return this.personne.getLogin();
    }
    public void setLogin(String login){
    this.personne.setLogin(login);
    }
    En fait quand tu met dans une balise pour afficher un truc qui vient de la session, si tu fais un property="myProperty", il faut alors forcément que tu aies dans le bean correspondant une méthode getMyProperty()...... Sinon ca met qu'il manque un getter....et pareil pour le set.....

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    C'est même encore plus fort, puisque l'utilisation de property="myProperty" ne provoquera que l'utilisation des getters et setters. L'existence de l'attribut "myProperty" est tout-à-fait facultative, tes accesseurs peuvent très bien servir à transformer une donnée par exemple :

    Dans ton form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private int test;
     
    private String getTestString() {
       return String.valueOf(test);
    }
     
    private void setTestString(String testString) {
       try {
          test = Integer.parseInt(testString);
       } catch (Exception e) {
          test = 0;
       }
    }
    Dans ta JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text property="testString"/>
    Et tout ça par la magie (la bidouille ?) de la réflexion !

    Bon, j'ai pas lu ton post en détail, donc je suis peut-être hors sujet, mais ca servira bien à quelqu'un un jour, non ?

  4. #4
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    Citation Envoyé par mixouille
    C'est même encore plus fort, puisque l'utilisation de property="myProperty" ne provoquera que l'utilisation des getters et setters. L'existence de l'attribut "myProperty" est tout-à-fait facultative, tes accesseurs peuvent très bien servir à transformer une donnée par exemple :

    Dans ton form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private int test;
     
    private String getTestString() {
       return String.valueOf(test);
    }
     
    private void setTestString(String testString) {
       try {
          test = Integer.parseInt(testString);
       } catch (Exception e) {
          test = 0;
       }
    }
    Dans ta JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text property="testString"/>
    Et tout ça par la magie (la bidouille ?) de la réflexion !

    Bon, j'ai pas lu ton post en détail, donc je suis peut-être hors sujet, mais ca servira bien à quelqu'un un jour, non ?

    oui je vois ca peut etre utile un jour. Ca permet de tester la valeur d'un attribut pour en fait retenir la valeur renvoyee par le test, sympa.

    Merci AnneB pour la reponse qui est un peu plus en rapport que celle de mixouille ^^

    En fait j'ai.
    Un bean Login.
    Un bean Adresse.
    Login contient un attribut adresse de type Adresse.

    Est il possible d'utiliser un objet Login dans l'actionForm, plutot que de redefinir tous les getters et les setters des attributs qui se trouvent dans la hyerarchie des objets ?

    (je sais pas si ma question est claire)

  5. #5
    Membre expérimenté Avatar de Sceener
    Inscrit en
    Mai 2007
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 231
    Par défaut
    un formulaire correspondant à un et à un seul bean.

  6. #6
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    dans le cas d'un formulaire sur une page je veux bien, mais pour un formulaire sur plusieurs c'est pas aussi simple, non ?

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

Discussions similaires

  1. Formulaire sur plusieurs pages
    Par sir_gcc dans le forum Struts 1
    Réponses: 5
    Dernier message: 09/04/2007, 21h22
  2. Formulaire sur plusieurs pages qui bloque
    Par yiuche dans le forum Langage
    Réponses: 7
    Dernier message: 03/08/2006, 09h23
  3. Formulaire sur plusieur pages ?
    Par Phenomenium dans le forum Langage
    Réponses: 15
    Dernier message: 25/01/2006, 13h52
  4. Un formulaire sur plusieurs page
    Par gophette dans le forum Langage
    Réponses: 3
    Dernier message: 18/01/2006, 08h11
  5. Formulaire sur plusieurs pages
    Par Gourouni dans le forum ASP
    Réponses: 23
    Dernier message: 09/12/2005, 10h17

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