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> avec type


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut <html:select> avec type
    Bonjour,

    Je souhaite constituer une liste d'objet placé dans un bean afin de les afficher dans le formulaire de création d'une entité.

    Je m'explique : mes entités peuvent être de plusieurs types.
    Type 1
    Type 2
    Type 3
    etc.

    Ces types sont en base et on chacun un nom et un ID.

    Lorsque je crée une nouvelle entité je dois être capable de sélectionner un type, je souhaitais donc placer un <html:select> dans mon formulaire initialisé dans mon action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public ActionForward displayCreateScreen(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    		Collection types = getTypeService().getAllTypes();
    		TypeLot [] table = new TypeLot[types.size()];
    		types.toArray(table);
     
    		request.setAttribute("types", table);
    		return mapping.findForward(FORWARD_SUCCESS);
    	}
    Mais si je place mon select comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:select name="types" property="nom" />
    Il ne trouve évidement pas de getter pour ma propriété, comment lui définir que mon objet est du type Type (mon BO) ?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    bonjour,
    pour remplir la liste de sélection avec les valeurs, il faut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:select property="nom">
    <html:options collection="types" labelProperty="xx" property="yy"/>
    </html:select>
    où :
    - xx est le nom de la propriété de ton objet TypeLot que tu souhaites afficher dans la combo
    - yy est le nom de la propriété de ton objet TypeLot que tu souhaites envoyer à ton serveur lors de la sélection d'une ligne

    EDIT : suppression de l'attribut "types" dans la balise html:select!

  3. #3
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    tu peux utiliser aussi le tag optionsCollection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:select name="types" property="nom">
    <html:optionsCollection name="types" label="xx" value="yy"/>
    </html:select>
    où xx et yy comme indiqué par mattheox

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    J'ai toujours la même erreur

  5. #5
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    Montre nous toute la stack d'erreur

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175

  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
    Peux-tu montrer comment tu as codé le html:select ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Au départ j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:select name="types" property="nom" />
    Puis j'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:select name="types" property="nom">
    <html:optionsCollection name="types" label="xx" value="yy"/>
    </html:select>
    Ca n'a rien changé.

  9. #9
    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 enlever l'attribut name dans le tag html:select.
    Le tag html:select étant dans un tag html:form, le name est automatiquement égal à celui du form-bean.

    Par contre, pour que ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="nom">
    <html:optionsCollection name="types" label="xx" value="yy"/>
    </html:select>
    il faut avoir défini une propriété nom dans l'ActionForm avec getter et setter pour pouvoir récupérer le nom sélecté et que la collection types soit une collection d'objets ayant pour propriété xx et yy, ce qui n'est pas ton cas.

    Donc, si la collection types est une collection d'objets Type ayant pour propriété id et nom, il faudrait plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="id">
       <html:optionsCollection name="types" label="nom" value="id"/>
    </html:select>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="id">
       <html:options collection="types" labelProperty="nom" property="id"/>
    </html:select>
    et définir la propriété id dans l'ActionForm avec getter et setter.
    Celle-ci contiendra l'id sélecté.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Ca me semble étrange qu'il soit aussi compliqué d'afficher un truc aussi simple.

    Je m'explique : j'ai un globalForward qui redirige vers une action nommée displayCreateLot, je pensais créer une liste de TypeLots à l'intérieur de cette action puis à l'aide d'un setAttribute pouvoir la récupérer sous forme de bean dans mon form qui créera mon objet proprement dit, en ayant sélectionné le type préalablement rempli.

    J'ai donc obligatoirement besoin d'initialiser un form et tout ?

  11. #11
    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
    L'intérêt d'une liste déroulante, c'est de pouvoir sélectionner un des éléments de la liste. Pour pouvoir récupérer l'élément sélectionné, il faut donc obligatoirement soumettre un formulaire.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Ok ce n'est pas ce que je veux... Je voulais juste un bean que je puisse utiliser à l'intérieur d'une dropdown, qui soit utilisé ensuite comme paramètre de mon formulaire. Et je trouve étrange que ça ne soit pas possible.

  13. #13
    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
    Je ne sais pas si c'est la fatigue (liée à cette maudite grève ) mais je ne comprends pas ce que tu souhaites faire.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Moi aussi ça m'a fatigué, je m'explique probablement mal

    Voilà ce que je souhaite obtenir:


    Avec le type remplis par rapport à la bdd.

    Pour ça j'ai pensé à faire une action qui redirige vers cette page et dont la seule fonction est de remplir une collection de types à partir de la base puis de faire un setAttribute pour réutiliser ce bean dans la jsp.

    basiquement j'ai un global forwart qui redirige vers une action qui s'appelle displayCreateLot c'est cette méthode qui initialise la collection et qui redirige ensuite vers la jsp qui permet de remplir le formulaire (image).

    Une fois que je clique sur le submit du formulaire c'est là qu'est créé mon objet à proprement parler, en utilisant les propriétés remplies ainsi que le type de lot sélectionné.

  15. #15
    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 rodbeck Voir le message
    Pour ça j'ai pensé à faire une action qui redirige vers cette page et dont la seule fonction est de remplir une collection de types à partir de la base puis de faire un setAttribute pour réutiliser ce bean dans la jsp.
    basiquement j'ai un global forwart qui redirige vers une action qui s'appelle displayCreateLot c'est cette méthode qui initialise la collection et qui redirige ensuite vers la jsp qui permet de remplir le formulaire (image).
    ça c'est ok.
    Il s'agit bien d'une collection d'objets Type ayant pour propriétés id et nom ?
    Citation Envoyé par rodbeck Voir le message
    Une fois que je clique sur le submit du formulaire c'est là qu'est créé mon objet à proprement parler, en utilisant les propriétés remplies ainsi que le type de lot sélectionné.
    Tu as donc bien un formulaire à soumettre.
    Et pour pouvoir récupérer le type de lot sélectionné, la liste déroulante doit être dans ce formulaire et la propriété définie dans le tag html:select, soit id, doit être définie dans l'ActionForm avec getter et setter.

    Désolée mais je ne comprends toujours pas ce qui te dérange là-dedans.

    Sinon, as-tu fait un test avec les éléments que je t'ai donné plus haut ?

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Yes ça fonctionne Merci

  17. #17
    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
    De rien.

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

Discussions similaires

  1. Binding html:select avec ActionForm
    Par Verboz dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/05/2007, 13h24
  2. Problème avec la balise <html:select
    Par rawanex dans le forum Struts 1
    Réponses: 5
    Dernier message: 16/04/2007, 13h28
  3. [PL/SQL] SELECT INTO avec type TABLE
    Par Kaejar dans le forum Oracle
    Réponses: 13
    Dernier message: 06/07/2006, 16h17
  4. [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

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