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 :

Liste déroulante à partir d'une collection


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut Liste déroulante à partir d'une collection
    Bonjour,

    Je suis sur le point de développer un site de vente en ligne et j'aurai besoin d'un rensignement concernant les listes déroulantes. Pour faire simple je prends l'exemple d'un ContactBook, composée de contacts (id, nom).

    Voici la situation :

    Je récupère une liste (collection) de contacts via une Action, et je transmets cette collection à ma page JSP.

    Je souhaite insérer cette collection de contacts dans une liste déroulantes en y affichant le nom.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     
    		//Création de l'objet service
    		IGestionContact service = new GestionContact();
     
    		//Récupère la liste des contacts
    		request.setAttribute("allContacts", service.listContact());
     
    		//Success!
    		return mapping.findForward("great");
    	}
    La liste des contacts est bien récupérée. Ce qui me pose problème est l'affichage dans la liste déroulante...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	<logic:notEmpty scope="request" name="allContacts">
     
    	<!-- Que faire ? -->
     
    	</logic:notEmpty>
    J'ai essayé plusieurs solutions, lu la doc et ça ne fonctionne pas.

    Je souhaite bien sûr créer cette liste déroulante via les taglibs struts (select, option(s)...).

    Merci pour votre aide

  2. #2
    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 y a des tas de discussions sur le forum qui traitent du sujet mais bon, dans ton cas, voilà ce qu'il faut coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="idSelected">
       <html:options collection="allContacts" property="id" labelProperty="nom"/>
    </html:select>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Tout d'abord, merci d'avoir répondu.

    J'ai bien regardé avant de poster mon message (en tant que bon défenseur de l'environnement de ce forum) mais vu que je débute sur struts j'ai encore un peu de mal avec certains détails, et toutes les solutions proposées n'ont pas fonctionné pour moi.

    Dans ton code tu mets property="idSelected". Peux-tu me dire à quoi correspond cet "idSelected" ?

    Lorsque j'utilise ton bout de code j'obtiens cette erreur :
    No getter method available for property idSelected for bean under name org.apache.struts.taglib.html.BEAN
    As-tu une idée d'où vient mon problème ?

    Merci encore.

  4. #4
    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 s'agit de la propriété qui contiendra l'élément sélecté, soit l'id.

    Pour que cela fonctionne, il faut définir la propriété idSelected dans l'ActionForm avec getter et setter, mettre le tag html:select dans un tag html:form et ajouter l'attribut name="nomDuFormBean" (celui correspondant à l'ActionForm) dans le mapping de l'Action dans le struts-config.xml.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Je viens de faire un N-ième test... et ça fonctionne. J'arrive à afficher la liste des contacts.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="contact">
    	<html:options collection="allContacts" property="id" labelProperty="name"/>
    </html:select>
    Je ne comprends pas puisque j'avais déjà essayé cette solution... Mais bon c'est réglé !

    Il me reste un problème, celui de récupérer le bean Contact dans mon Action.

    Lorsque je valide mon formulaire, j'obtiens cette erreur :
    Cannot invoke com.tom.contactbook.application.form.ContactForm.setContact - argument type mismatch
    Si quelqu'un a une solution ou un explication je suis preneur.

    Merci

  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
    La propriété contact spécifiée dans le tag html:select doit être de type String.

    Tu ne récupèreras pas le bean Contact mais l'id du bean Contact sélecté.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Super, merci beaucoup !

    Connais-tu une solution pour récupérer le bean plutôt que l'id uniquement ?

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

Discussions similaires

  1. remplissage d'une liste déroulante à partir d'une autre liste
    Par monphp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/05/2007, 12h28
  2. [SQL] Liste déroulante à partir d'une table avec tri
    Par ksper92 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2006, 11h25
  3. liste déroulante à partir d'une base access
    Par Adren dans le forum ASP
    Réponses: 6
    Dernier message: 05/07/2006, 11h27
  4. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46
  5. alimenter un liste déroulante à partir d'une popup
    Par allowen dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/01/2006, 15h27

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