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] multiple et récupération des données dans une liste d'un form bean


Sujet :

Struts 1 Java

  1. #1
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut [html:select] multiple et récupération des données dans une liste d'un form bean
    Bonjour à tous,

    Je sais que c'est un sujet à maintes fois evoqué mais je n'arrive pas à récupérer les données du formulaire (généré par un html:select multiple) dans une liste d'un ActionForm. J'arrive toutefois à renseigner les valeurs dans le select à l'init de la page.
    Voici le code de ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <html:form action="/integration/chargementEtablissement">
    <html:select property="listeDepartement" multiple="true" name="integration_extractionEtablissementForm">
    <html:optionsCollection name="integration_extractionEtablissementForm" property="listeDepartement" value="codeMen" label="libelleLong" />
    </html:select>
    <a href="javascript:Form.submit('integration_extractionEtablissementForm');"> Valider</a>
    </html:form>
    Et le code (partiel) de mon Action Form :
    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
     
    /**
     * @struts.form name="integration_extractionEtablissementForm"
     */
    public class ExtractionEtablissementForm extends ActionForm {
            private List listeDepartement;
     
    	public List getListeDepartement() {
    		return listeDepartement;
    	}
     
    	public void setListeDepartement(String [] listeDepartement) {
    		this.listeDepartement = Arrays.asList(listeDepartement);
    	}
     
    	public void initListeDepartement(List listeDepartement) {
    		this.listeDepartement = listeDepartement;
    	}
    }
    Et le code de mon action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /**
     * @struts.action path="/integration/chargementEtablissement" scope="request"
     *                name="integration_extractionEtablissementForm" validate="false"
     * 
     * @struts.action-forward name="debut" path="integration.batchDebut"
     * @struts.action-forward name="fin" path="integration.batchFin"
     */
    public class ChargementEtablissementAction extends Action {
    		ExtractionEtablissementForm extractionEtablissementForm = (ExtractionEtablissementForm) form;
    		logger.info("extractionEtablissementForm : Liste departement : " + 
    				extractionEtablissementForm.getListeDepartement());
    listeDepartement est null;

    Merci d'avance pour les réponses.
    En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Comme il est écrit dans la doc de Struts :
    multiple="true" IS selected - The corresponding property should be an array of any supported data type.
    La propriété listeDepartement doit donc être de type String[].
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Je n'avais pas regardé en détail le code de ton ActionForm.

    Essaie plutôt dans l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class ExtractionEtablissementForm extends ActionForm
     {
            private String[] listeDepartement;
     
    	public String[] getListeDepartement() {
    		return listeDepartement;
    	}
    	public void setListeDepartement(String[] listeDepartement) {
    		this.listeDepartement = listeDepartement ;
    	}
    }
    et dans l'Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class ChargementEtablissementAction extends Action
    {
    	ExtractionEtablissementForm extractionEtablissementForm = (ExtractionEtablissementForm) form;
    	String[] departements = extractionEtablissementForm.getListeDepartement();
            List listeDepartement = Arrays.asList(departements) ;
    ...
    }
    Modératrice Java - Struts, Servlets/JSP, ...

  4. #4
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut Ca marche => résumé
    Mot clé : <html:select> html select bean form initialise récupere donné ActionForm

    Ca marche !
    En fait il faut gérer une liste d'objet que l'on passe à optionCollections pour l'affichage des données et une propriétés (pas que les getter et setter) de type tableau de String pour la récupération des données.

    Voici le code :

    Pour la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html:form action="/integration/chargementEtablissement">
    <html:select property="tabCodeDepartement" multiple="true"
    				name="integration_extractionEtablissementForm">
    <html:optionsCollection name="integration_extractionEtablissementForm" property="listeDepartement" value="codeMen" label="libelleLong" />
    </html:select>
    <a href="javascript:Form.submit('integration_extractionEtablissementForm');"> Valider</a>
    </html:form>
    Avec listeDepartement une liste d'objet departement (avec codeMen et libelleLong comme propriétés) utilisé lors de l'init de la page et

    tabCodeDepartement une propriété de type ([] String) utilisée pour récupérer les données (code départements) sélectionnées.

    Voici le code de l'ActionForm :

    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
     
    /**
     * @struts.form name="integration_extractionEtablissementForm"
     */
    public class ExtractionEtablissementForm extends ActionForm {
    	private List listeDepartement;
    	private String [] tabCodeDepartement;
     
    	public List getListeDepartement() {
    		return listeDepartement;
    	}
     
    	public void setListeDepartement(List listeDepartement) {
    		this.listeDepartement = listeDepartement;
    	}
     
    	public String[] getTabCodeDepartement() {
    		return tabCodeDepartement;
    	}
    	public void setTabCodeDepartement(String[] tabCodeDepartement) {
    		this.tabCodeDepartement = tabCodeDepartement;
    	}
    }
    Le code de l'action qui initialise la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public final ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
     
    ExtractionEtablissementForm extractionEtablissementForm = (ExtractionEtablissementForm) form;
     
    extractionEtablissementForm.setListeDepartement(
    								departementManager.getCodeDepartementDispo());
     
    request.setAttribute("integration_extractionEtablissementForm", 
    								extractionEtablissementForm);
    }
    Le code de l'action qui récupère les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public final ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    ExtractionEtablissementForm extractionEtablissementForm = (ExtractionEtablissementForm) form;
    log.info("extractionEtablissementForm : Liste departement : " + 
    				extractionEtablissementForm.getTabCodeDepartement());
    }
    Voila et merci pour l'aide.
    En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !

  5. #5
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Ben décidément, je ne suis pas bien réveillée ce matin.

    Je n'avais pas vu que tu avais utilisé la même propriété dans l'attribut property du tag html:select et dans celui du tag html:optionsCollection.

    Il faut effectivement distinguer les deux.
    Il faut bien définir dans l'ActionForm la collection d'objets qui permet d'alimenter les balises options de la liste déroulante et la propriété de type String[] qui permet de récupérer les éléments sélectés.

    Bien joué.
    Modératrice Java - Struts, Servlets/JSP, ...

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

Discussions similaires

  1. Récupération des données dans une boucle for
    Par boubounagh dans le forum Interfaces Graphiques en Java
    Réponses: 22
    Dernier message: 24/10/2011, 16h29
  2. [XL-2003] Récupération des données dans une base à partir d'une valeur donnée
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 01/04/2011, 14h33
  3. Réponses: 3
    Dernier message: 23/10/2007, 15h47
  4. [MySQL] Récupération des données dans une table
    Par doudom dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/07/2007, 19h59
  5. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04

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