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 :

[html:select] Liste déroulante


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 145
    Par défaut
    Salut
    En fait je veux créer une liste déroulante qui se rempli depuis ma base de données.
    En fait je comprends pas trop comment faut faire,j'ai pas trouver de tuto struts qui m'aide;mais bon:
    au niveau de mon action j'ai mnt un vecteur contenant des objets(model) donc chaque objet correspond à un enregistrement de ma table.
    j'ai fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("vect",vect);
    au niveau de mon action
    mnt en s'inspirant un peu de ce que j'ai trouvé sur ce forum ,j'ai fait ça sur ma page jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html:select property="selection">
        <logic:iterate id="y" name="vect">
                  <option value="<bean:write name="y"property="id"/>"></option>
         </logic:iterate>
    </html:select>
    Mais ça me donne cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.servlet.ServletException: Cannot find bean vect in any scope
    En fait je comprends pas ce que je dois vraimenet faire,
    si quelqu'un pourra m'expliquer au moins le principe
    Merci d'avance

  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 est plus simple d'utiliser le tag html:options comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="selection">
       <html:options collection="vect" property="id" labelProperty="id"/>
    </html:select>

  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
    Ou encore (méthode un poil plus appropriée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="selection">
    	<html:optionsCollection name="vect" value="id" label="libelle" />
    </html:select>
    Si tu n'as pas de libellé, remplace "libelle" par "id".
    Si tu veux récupérer ta collection à partir d'une propriété d'un bean, tu fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:optionsCollection property="vect" name="tonBean" value="id" label="libelle" />
    Si ton form est ton form bean défini pour ton action, inutile de préciser l'attribut "name".

    Je crois que "optionsCollection" ne marche qu'à partir de Struts 1.2. Sinon, cf. solution de c_nvy.

  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
    Citation Envoyé par mixouille
    Je crois que "optionsCollection" ne marche qu'à partir de Struts 1.2. Sinon, cf. solution de c_nvy.
    Ce n'est pas une question de version.

    Tout dépend comment la collection est mise dans le scope.

    Le tag html:optionsCollection ne peut être utilisé que si la collection est une propriété de l'ActionForm et qu'elle a été mise dans le scope via le setter de l'ActionForm.

    Etant donné que luna007 a mis la collection dans le scope via un request.setAttribute, il faut utiliser le tag html:options comme je l'ai indiqué précédemment.

  5. #5
    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
    En effet, je n'étais pas remonté assez haut dans le thread.
    Donc, html:options

    Ceci dit, pourquoi dis-tu cela :
    et qu'elle a été mise dans le scope via le setter de l'ActionForm
    je ne vois pas vraiment le rapport, si ?

    EDIT : au fait, je ne suis pas sûr que l'on réponde vraiment au problème de luna, qui visiblement a un problème pour récupérer son bean. As-tu essayé de préciser scope="request" dans ta balise ? (vu que tu mets ton bean en scope request)

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 145
    Par défaut
    Salut tt le monde, merci pr vos réponses
    Est ce que vs pouvez m'expliquez c'est quoi la différence entre les 3 méthodes:
    <html:option> ,
    <html:options>, et
    <html:optionsCollection> ?

    et c'est quoi un bean ? est ce que c'est le modèle ?
    .
    J'obtiens tjs l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.apache.jasper.JasperException: Cannot find bean vect in any scope


    Merci encore

  7. #7
    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 mixouille
    je ne vois pas vraiment le rapport, si ?
    C'est peut-être simplement un problème de formulation.

    Quand tu fais ceci dans l'Action qui initialise le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setUneCollection(uneCollection) ;
    le form-bean étant dans le scope et la collection étant une propriété du form-bean, elle est donc aussi dans le scope.

    Sinon, il n'est pas utile d'ajouter le scope dans la balise. Si la collection est présente dans le scope request, elle sera trouvée.

    Si la collection n'est pas trouvé dans le scope, c'est peut-être simplement parce que le request.setAttribute n'est pas dans l'Action qui s'exécute avant l'affichage du formulaire.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/07/2009, 21h41
  2. récuperer la valeur d'un champ select (liste déroulante)
    Par bous_saad317 dans le forum Struts 1
    Réponses: 7
    Dernier message: 03/11/2006, 12h14
  3. [HTML] select liste avec decalages des entrees
    Par guy2004 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 19/05/2006, 15h10
  4. [JSP/STRUTS] pré-selection liste déroulante
    Par Zxyankxya dans le forum Struts 1
    Réponses: 7
    Dernier message: 20/01/2006, 15h14
  5. Hauteur SELECT (liste déroulante ?
    Par jaggy19 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/08/2005, 15h19

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