Pb de récupération de donnees : combo html:select dans une JSP [Résolu]

Signaler
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
3 avril 2008
-
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
3 avril 2008
-
Salut,
me voilà bloquée sur un problème sans doute bête mais je tourne en rond. J'espère que quelqu'un pourra m'aider.
J'ai une comboBox dans une JSP qui doit afficher une liste de valeur et lorsque je sauvegarde mon formulaire, je cherche évidemment à récupérer cette donnée (son id).
J'arrive à afficher ma liste de données dans la combo et la sauvegarde se passe bien à priori (pas d'exception) sauf que je récupère tout le temps l'id = 0 à cette combo !!! Je pense qu'il s'agit d'un problème de nommage de variable mais après avoir épuisé pas mal de combinaisons possibles, je ne sais plus quoi faire.

Voici les portions de code qui concerne ce problème : (désolé y'a bcp de fichiers !!! )
Le JSP :
<%...
List res = manager.loadList(null,new SearchCriterion(),false);
request.setAttribute("agences",res);
...%>
...
<html:form action= "createClient.do" focus="code">
 

    <table class="info">
    <tr>
            <td class="oddlabelobligatoire">Agence : </td>
            <td class="odd">
                <html:select property="idAgence" style="width='10px'">
                    <html:options collection="agences" property="id" labelProperty="libelle"/>
                </html:select>
            </td>
    </tr>

Le struts-config :
<form-bean name ="ClientForm"
            type="com.infotel.gda.struts.forms.ClientForm">
            <form-property name="nom" type="java.lang.String" />
            <form-property name="ville" type="java.lang.String" />
            <form-property name="codePostal" type="java.lang.Integer" />
            <form-property name="adresse1" type="java.lang.String" />
            <form-property name="adresse2" type="java.lang.String" />
            <form-property name="adresse3" type="java.lang.String" />
            <form-property name="adresse4" type="java.lang.String" />
            <form-property name="objectifCA" type="java.lang.Double" />
            <form-property name="idAgence" type="java.lang.Integer" />
            <form-property name="idCommercial" type="java.lang.Integer" />
 </form-bean>

Le formulaire :
/**
   * Lien vers l'agence par son id.
   */
private int idAgence;

/**
     *
     * Getter sur l'id de l'agence.
     * @return int : l'id de l'agence
     *
     * @since GDAWeb 1.0
     */
    public int getIdAgence() {
        return idAgence;
    }

    /**
     *
     * Setter sur l'id de l'agence.
     * @param idAgence : l'id de l'agence
     *
     * @since GDAWeb 1.0
     */
    public void setIdAgence(int idAgence) {
        this.idAgence = idAgence;
    }

Le Bean :
/**
   * Agence à laquelle le client est rattachée.
   */
private int idAgence;

/**
     * Récupération de l'agence.
     * @return l'agence du client
     *
     * @since gda_j2ee 1.0
     */
    public int getIdAgence() {
        return idAgence;
    }

    /**
     * Affectation de l'attribut agence .
     * @param idAgence agence
     *
     * @since gda_j2ee 1.0
     */
    public void setIdAgence(int idAgence) {
        this.idAgence = idAgence;
    }

L'Action :
cli.setIdAgence(formulaire.getIdAgence());

Voilà, j'espère que ce n'est pas trop long, j'ai essayer de ne mettre que l'essentiel. Si vous avez des questions ou besoin de plus de code, faites moi signes. Merci d'avance, j'espère que quelqu'un trouvera.

@+++
Egwene

4 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
124
Dans ton Action struts, fait un System.out.println(formulaire.getIdAgence()); voir ce qu'il t'affiche, mais à première vue, ton code me paraît correct !

Le seul truc que je comprend pas c'est pourquoi tu déclare les champs de ton formulaire en 2 fois : dans le struts-config et dans ton FormBean : déclare les uniquements dans le struts-config, ca prêtera moins à confusion :
<form-bean name= "ClientForm"
            type=" org.apache.struts.actions.DynaActionForm ">
            <form-property name ="nom" type="java.lang.String" />
            <form-property name="ville" type="java.lang.String" />
            <form-property name="codePostal" type="java.lang.Integer" />
            <form-property name="adresse1" type="java.lang.String" />
            <form-property name="adresse2" type="java.lang.String" />
            <form-property name="adresse3" type="java.lang.String" />
            <form-property name="adresse4" type="java.lang.String" />
            <form-property name="objectifCA" type="java.lang.Double" />
            <form-property name="idAgence" type="java.lang.Integer" />
            <form-property name="idCommercial" type="java.lang.Integer" />
 </form-bean>
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
3 avril 2008

Merci de m'aider.
C'était ça effectivement.
Ta remarque est très judicieuse car pour ne pas compliqué le problème, j'ai pas expliqué ce point.
En effet j'utilise des DynaActionForm donc à priori j'ai rien dans mon ClientForm sauf que lorsque je faisais cela, j'arrivais même pas à sauvegarder. J'avais une exception du genre : "No getter method for the property idAgence". Bref, je me suis dit qu'il retouvait pas ces champs pour je ne sais quelle raison et donc j'ai essayé de mettre ces champs et leurs accesseurs dans le form ClientForm et là ça marchait mieux puisque que sauvegarder sans erreur excepté cet id à 0.

En fait je crois que j'avais une erreur de nommage au tout début, d'où l'exception No Getter method, ... et après, lorsque j'ai mis les accesseurs dans le formulaire ça pouvait pas marcher. Entre temps j'ai due corriger l'erreur de nommage mais je l'ai pas vu !!!

Merci beaucoup pour ton aide.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
124
Oui en effet, une exception de type noGetter vient très très souvent d'un problème de frappe ! C'est l'inconvénient de struts quand on fait tout à la main : les erreurs arrivent très vite :'(

Il existe des outils pour automatiser cà apparement (pour eclipse, mais j'ai pas testé).
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
3 avril 2008

J'ai été sure que c'était un truc bête
Merci encore !