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

Servlets/JSP Java Discussion :

[DEBUTANT] [JSP] Afficher collection differentes en fonction d'un html:select


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut [DEBUTANT] [JSP] Afficher collection differentes en fonction d'un html:select
    Bonjour,

    J'ai une JSP qui contient des listes déroulantes. Je voudrai pouvoir changer la collection affichée par l'une d'entre elles en fonction de la valeur selectionnée dans un html:select en dur :

    Le html:select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <td><html:select property="cdscte">
    				<html:option value="12148">12148</html:option>
    				<html:option value="30003">30003</html:option>
    			</html:select></td>
    La liste qui doit s'updater

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <td><html:select property="altacct" onchange="changeValue()">
    				<html:option value="    ">
    				</html:option>
    				<html:options collection="listNumpci" property="numpciAsString"
    					labelProperty="numpci" />
    			</html:select></td>
    la collection listNumpci doit pouvoir être remplacé par une autre en focntion de la property cdscte.

    Où dois-je mettre le code? et avec quelle(s) balise(s)

    Désolé de cette question triviale, je débute vraiment.

    Merci d'avance de vos réponses

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Et bien le plus simple (peut-être) est de charger la liste en fonction de la valeur de ta première combo et d'appeler le contrôleur à chaque modification de cette dernière (c'est lourd mais c'est simple)

    Autre possibilité, tu envoies les 2 listes et tu affiches par du javascript en fonction de la valeur de la combo (l'avantage, il n'y a pas d'aller/retour, l'inconvénient, pas très standard et ça peut remettre en cause l'apparence de la page sur certains navigateurs (usage de style.display="none" ou style.display="block"))

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Bonjour Obutterlin,

    Merci de ta réponse rapide. Si j'osais... Je te demanderai un petit example pour la première solution ou du moins un petit squelette de code ??

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est mon bon jour

    Pour le paramétrage du struts-config.xml, je te laisse faire...
    C'est une piste, à toi de voir si ça te suffit...

    A+

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    package test;
     
    import java.util.ArrayList;
    import java.util.List;
    import org.apache.struts.action.ActionForm;
     
    public class TestForm extends ActionForm
    {
        private static final long serialVersionUID = 1L;
        private int selected = 1;
        private List<TestListElem> list1 = new ArrayList<TestListElem>();
        private List<TestListElem> list2 = new ArrayList<TestListElem>();
        private int selected1 = 0;
        private int selected2 = 0;
     
        public TestForm()
        {
            super();
        }
     
        public int getSelected()
        {
            return selected;
        }
     
        public void setSelected(int selected)
        {
            this.selected = selected;
        }
     
        public List<TestListElem> getList1()
        {
            return list1;
        }
     
        public List<TestListElem> getList2()
        {
            return list2;
        }
     
        public int getSelected1()
        {
            return selected1;
        }
     
        public void setSelected1(int selected1)
        {
            this.selected1 = selected1;
        }
     
        public int getSelected2()
        {
            return selected2;
        }
     
        public void setSelected2(int selected2)
        {
            this.selected2 = selected2;
        }
     
    }
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package test;
     
    public class TestListElem
    {
        private int key = 0;
        private String label = null;
     
        public TestListElem()
        {
            super();
        }
        public TestListElem(int key, String label)
        {
            super();
            this.key = key;
            this.label = label;
        }
        public int getKey()
        {
            return key;
        }
        public void setKey(int key)
        {
            this.key = key;
        }
        public String getLabel()
        {
            return label;
        }
        public void setLabel(String label)
        {
            this.label = label;
        }
     
    }
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package test;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    public class TestAction extends Action
    {
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception     
        {
            ActionForward forward = null;
            try
            {
                TestForm _form = (TestForm)form;
                switch ( _form.getSelected() )
                {
                    case 1 :
                        if ( _form.getList1().size() > 0 ) break;
                        _form.getList1().add(new TestListElem(1, "Liste1 -> valeur 1"));
                        _form.getList1().add(new TestListElem(2, "Liste1 -> valeur 2"));
                        _form.getList1().add(new TestListElem(3, "Liste1 -> valeur 3"));
                        _form.getList1().add(new TestListElem(4, "Liste1 -> valeur 4"));
                        break;
                    case 2 :
                        if ( _form.getList2().size() > 0 ) break;
                        _form.getList2().add(new TestListElem(1, "Liste2 <- retour 1"));
                        _form.getList2().add(new TestListElem(2, "Liste2 <- retour 2"));
                        _form.getList2().add(new TestListElem(3, "Liste2 <- retour 3"));
                        _form.getList2().add(new TestListElem(4, "Liste2 <- retour 4"));
                        break;
                }
                forward = mapping.findForward("succes");
            }
            catch (Exception e)
            {
                forward = mapping.findForward("error");
            }
            return forward;
        }
    }
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
     
    <html:html>
    <html:form action="/testAction">
     
    <table>
    <tr>
        <td>Sélectionnez le type de liste</td>
        <td>
            <html:select property="selected" onchange="document.forms[0].submit();">
                <html:option key="Liste 1" value="1"/>
                <html:option key="Liste 2" value="2"/>
            </html:select>
        </td>
    </tr>
    <tr>
        <td>Liste</td>
        <td>
        <logic:equal name="TestForm" property="selected" value="1">
            <html:select property="selected1">
                <html:optionsCollection property="list1" label="label" value="key"/>
            </html:select>
        </logic:equal>
        <logic:equal name="TestForm" property="selected" value="2">
            <html:select property="selected2">
                <html:optionsCollection property="list2" label="label" value="key"/>
            </html:select>
        </logic:equal>
        </td>
    </tr>
    </table>
    <html:submit>Envoyer</html:submit>
    </html:form>
    </html:html>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Merci !!!


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/07/2014, 12h22
  2. [ Debutant ] Comment afficher une image dans une page JSP ?
    Par Hello_World dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/07/2009, 09h13
  3. Afficher des données en fonction d'un champ select
    Par gueud dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2008, 13h48
  4. Réponses: 8
    Dernier message: 11/05/2007, 11h47
  5. [debutant] Comment afficher un integer a l'ecran
    Par Johngame dans le forum DirectX
    Réponses: 1
    Dernier message: 05/06/2003, 20h35

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