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 prérempli puis validation


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut Formulaire prérempli puis validation
    Bonjour,
    Je cherche à insérer un enregistrement dans une base de données (c'est le but premier).
    Ce que j'ai :

    1. Sur une des pages j'ai ce lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link href="AjoutClient.do">Ajouter un Client</html:link>
    2. Dans mon fichier struts-config.html 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
     
     
        	<form-bean name="ajoutClientForm" type="gescom_pkg.AjoutClientForm" />
     
    <action
            	path="/AjoutClient"
            	type="gescom_pkg.AjoutClientAction"
            	name="ajoutClientForm"
            	input="/pages/AjoutClient.jsp"
            	validate="true">
                	<forward name="success" path="/pages/AjoutClient.jsp" redirect="false"/>
                	<forward name="failure" path="/pages/AjoutClient.jsp" />
        	</action>
    3. Dans mon fichier AjoutClientForm.java 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
    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
    package gescom_pkg;
     
    import org.apache.struts.action.*;
    import java.util.ArrayList;
     
    import javax.servlet.http.HttpServletRequest;
    public class AjoutClientForm extends ActionForm
    {
    	static final long serialVersionUID=1;
    	private String intitule;
    	private String desc_fonc;
    	private String commentaires;
    	private String axe_dev;
    	private String nom_liste;
    	private ArrayList<String> activite;
     
        public String getNom_liste()
        {return nom_liste; }
        public void setNom_liste(String nom_liste)
        {this.nom_liste = nom_liste; }
     
        public String getIntitule()
        {return intitule; }
        public void setIntitule(String intitule)
        {this.intitule = intitule; }
     
        public String getDesc_fonc()
        {return desc_fonc; }
        public void setDesc_fonc(String desc_fonc)
        {this.desc_fonc = desc_fonc; }
     
        public String getCommentaires()
        {return commentaires; }
        public void setCommentaires(String commentaires)
        {this.commentaires = commentaires; }
     
        public String getAxe_dev()
        {return axe_dev; }
        public void setAxe_dev(String axe_dev)
        {this.axe_dev = axe_dev; }
     
        public ArrayList<String> getActivite()
        {return activite; }
        public void setActivite(ArrayList<String> activite)
        {this.activite = activite; }
     
     
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
        {
            ActionErrors errors = new ActionErrors();
     
            return errors;
        }
    }
    4.Fichier AjoutClientAction.java
    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
    package gescom_pkg;
    import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import java.sql.*;
    import java.util.ArrayList;
     
    public class AjoutClientAction extends Action
        {
     
            public ActionForward execute(ActionMapping mapping,
                        ActionForm form,
                        HttpServletRequest req, HttpServletResponse res)
                        throws Exception
            {
            	AjoutClientForm ajoutClientForm = (AjoutClientForm) form;
                ActionErrors errors = new ActionErrors();
                ActionError newError = null;
                ArrayList<String> liste = new ArrayList<String>();
                try
                {            	
                	// Ajout à la base de données
                	ConnexionBDD connec=new ConnexionBDD();
                	connec.DBConnexion();
                	String s="SELECT * from activite;";
                	ResultSet rs=connec.getResultat(s);
                	while(rs.next())
                	{
                		liste.add(rs.getString("ACT_LIB"));
                	}
                    liste.add("Autre ...");
                    ajoutClientForm.setAxe_dev("");
                    ajoutClientForm.setIntitule("");
                    ajoutClientForm.setCommentaires("");
                    ajoutClientForm.setDesc_fonc("");
                	ajoutClientForm.setActivite(liste);
                	//System.out.println(ajoutClientForm.getActivite());
                	ajoutClientForm.setNom_liste("liste_activite");
                	connec.BDDeconnexion();
                	return mapping.findForward("success");
                }
                catch (Exception e)
                {
                	System.out.println(e);
                	newError = new ActionError("errors.db.not.found");
                	errors.add(ActionErrors.GLOBAL_ERROR, newError);
     
                	saveErrors(req, errors);
                	return  mapping.findForward("failure");
                }
            }
    }
    5. Fichier AjoutClient.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
    <html:form action="/AjoutClient">
    <font color="red"><html:errors /></font>
    <table width=100% border=0>
    <tr height=20><td width=50%>Intitulé : </td><td><html:text property="intitule" /></td></tr>
    <tr height=20><td>Descriptif fonctionnel : </td><td><html:textarea property="desc_fonc"></html:textarea></td></tr>
    <tr height=20><td>Commentaires : </td><td><input type=textarea property="commentaires"></textarea></td></tr>
    <tr height=20><td>Axes de développements : </td><td><input type=textarea property="ave_dev"></textarea></td></tr>
    <tr height=20><td>Activité : </td><td>
    <html:select property="nom_liste">
    <html:options property="activite"/>
    </html:select>
    </td></tr>
    <tr height=20><td><html:submit value="VALIDER"/></html:form>
    <td>.....
    Première question :
    Jusque là, pas de problème. Lorsque je clique sur le lien ajouter un client, je suis redirigé vers la page ajoutClient.jsp avec le select du formulaire rempli avec les valeurs de la base de données. Je cherche ensuite à ajouter ce que je vais saisir dans le formulaire dans la base de données mais je n'y arrive pas.

    J'ai essayé en changeant l'action du formulaire en mettant une autre action du style ValiderAjoutClient (avec la classe Form et Action derrière qui récupère les valeurs pour les ajouter à la base) mais ça me mets comme erreur que activite a une valeur nulle.

    Deuxième question :
    J'aimerais savoir si il y a la possibilité de définir les propriétés value d'un select. Je m'explique, lorsque mon Action rempli la liste des activités, pour chaque <option> le champs value est égal à la chaîne affichée. J'aimerai savoir si je peux, au moment de la définition de la liste, affecter une autre valeur à ce champ value ?

    merci d'avance
    Shiv@

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Pour la question 1 il te faut faire une requete de type insert et utiliser la methode executeQuery("ta requete sql")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Connection        con;//que tu as defini au prealable
    Statement         stmt =con.createStatement();
    ResultSet         rset =  stmt.executeQuery( "ta requete");

  3. #3
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Merci mais ça je sais faire, c'est au niveau de l'organisation des classes que je ne vois pas comment faire.
    En gros, mon formulaire se rempli parce qu'il a comme action AjoutClient grâce à la classe AjoutClientAction. Je voudrais ensuite le modifier puis le valider et que ça m'ajoute à la base de données les valeurs que je viens de saisir. Le problème est que l'action de mon formulaire est AjoutClient (nécéssaire pour que le formulaire se remplisse) et donc je ne peux pas appeller d'autre action pour l'ajout à la BDD après la validation.

  4. #4
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Je ne sais pas si je suis claire

  5. #5
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="nom_liste">
    <html:options property="activite"/>
    </html:select>
    ceci me semble bizarre, il me semble que ton formulaire contient la valeur selectionnee de la liste (c.a.d. nom_liste), mais l'ensemble des valeurs de ta liste.


    Pour la 2eme question, tu as property pour la valeur et labelProperty pour ce qui s'affiche.

  6. #6
    Expert confirmé

    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
    Par défaut
    Il faut faire deux Actions liées au même form-bean : une qui initialise le formulaire et une qui s'exécute au submit du formulaire.

  7. #7
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Citation Envoyé par willoi
    il me semble que ton formulaire contient la valeur selectionnee de la liste (c.a.d. nom_liste), mais l'ensemble des valeurs de ta liste.
    Je ne comprends pas ce que tu veux dire

  8. #8
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par Shiva Skunk
    Deuxième question :
    J'aimerais savoir si il y a la possibilité de définir les propriétés value d'un select. Je m'explique, lorsque mon Action rempli la liste des activités, pour chaque <option> le champs value est égal à la chaîne affichée. J'aimerai savoir si je peux, au moment de la définition de la liste, affecter une autre valeur à ce champ value ?
    Tu as mis le tag résolu mais tu n'as pas la réponse à ta deuxième question.

    Donc, tu as deux solutions.

    Imaginons que dans value, tu veux mettre l'id de l'activité et dans label le libellé.

    Soit tu crées une ArrayList de LabelValueBean comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(rs.next())
    {
       liste.add(new LabelValueBean(rs.getString("ACT_LIB"),rs.getString("ACT_ID"));
    }
    et pour l'afficher dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="nom_liste">
       <html:optionsCollection property="activite"/>
    </html:select>
    Soit tu crées une ArrayList de beans Activite.

    Dans ce cas, il faut créer une classe Activite avec par exemple pour propriétés id et libelle, les getters et setters correspondant et le constructeur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Activite(String id,String libelle)
    {
       this.id=id;
       this.libelle=libelle ;
    }
    Puis dans l'Action, tu crées une ArrayList de beans Activite comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(rs.next())
    {
       liste.add(new Activite(rs.getString("ACT_ID"),rs.getString("ACT_LIB"));
    }
    et pour l'afficher dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="nom_liste">
       <html:optionsCollection property="activite" value="id" label="libelle"/>
    </html:select>

  9. #9
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    merci beaucoup, je vais essayer de le faire fonctionner.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2008, 16h29
  2. Validate ActionForm pour formulaire prérempli
    Par stylatone dans le forum Struts 1
    Réponses: 7
    Dernier message: 31/01/2008, 16h56
  3. [XSD] [XML/XSD] Générer puis valider à partir d'un XSD
    Par benben13 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 08/06/2006, 13h59
  4. Formulaire avec 2 validations possibles
    Par FBSVGR dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 24/05/2006, 08h47
  5. Formulaire qui se valide tout seul :8O:
    Par Boumeur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2005, 12h21

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