Bonjour,
Je souhaiterai réaliser une datatable contenant 3 colonne
Une colonne de texte
Une colonne avec une liste de catégorie (SelectOneMenu)
Une colonne avec une liste de sous catégorie
Une catégorie contient 0..n sous catégories
Évidement, chaque catégorie ne contient pas les même sous catégories.
Puis
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 <rich:column> <f:facet name="header">Aide</f:facet> <h:outputText value="#{typeAideFin.libelle}"></h:outputText> </rich:column> <rich:column> <f:facet name="header">Catégorie</f:facet> <h:selectOneMenu id="comboCateg" value="#{typeAideFin.sousCategorie.categorie.code}" valueChangeListener="#{controller.updateListeSousCateg}"> <f:selectItems value="#{controller.listeCategorieUI}"></f:selectItems> <a4j:support event="onchange" reRender="sousCateg"> </a4j:support> </h:selectOneMenu> </rich:column> <rich:column id="sousCateg"> <f:facet name="header">Sous-Catégorie</f:facet> <h:selectOneMenu value="#{typeAideFin.sousCategorie.code}" id="comboSousCateg" valueChangeListener="#{controller.updateSousCateg}"> <f:selectItems id="listeSousCategorieUI" value="#{controller.listeSousCategorieUI}"></f:selectItems> <a4j:support event="onchange"> </a4j:support> </h:selectOneMenu> </rich:column>
Comment peut-on faire pour initialiser tout ça ? je tourne en rond depuis trois jours...
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 private ArrayList<SelectItem> listeCategorieUI; private ArrayList<SelectItem> listeSousCategorieUI; ... ... public void updateListeSousCateg(ValueChangeEvent evt){ System.out.println("Mise à jour"); //Remplissage de la liste des sous catégories this.listeSousCategorieUI.clear(); //On rajoute quand même une possibilité de sélectionner l'option aucun this.listeSousCategorieUI.add(new SelectItem(-1, "Aucun")); for (SousCategorie sousCateg : this.service.getAllSousCategorieByCategorie(evt.getNewValue().toString())){ this.listeSousCategorieUI.add(new SelectItem(sousCateg.getCode(), sousCateg.getLibelle())); } }
Partager