Bonjour, je rencontre un problème dans la tentative de faire des onglets dynamiques en JSF.
L'idée est la suivante:
je récupère une liste, et pour chaque item je crée un onglet avec dans cet onglet une liste de SelectItem. Je fais cela dans un backing bean lié à ma page JSP.
L'aspect graphique fonctionne, mais je n'arrive pas à récupérer les valeurs saisies par l'utilisateur.
Je voudrais avoir un code Java qui fait la même chose que cette JSP:
où list[i] serait les valeurs sélectionnées par l'utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <rich:tabPanel id="tabPanel"> <rich:panel> <h:selectManyListbox id="selecVariables" value="#list[i]}"> <f:selectItems value="#{...}" /> </h:selectManyListbox> </rich:panel> </rich:tabPanel>
Je sais que ce code ne marcherait pas tel quel, mais je pense que c'est assez clair.
Voilà la partie de ma page JSP:
Voilà maintenant comment est codé mon bean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <rich:tabPanel id="tabPanel" switchType="client" binding="#{dataBase.mytabPanel}" />
- la méthode qui lie les composants
- et la méthode que j'appelle lors du click sur le bouton de ma JSP:
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 /** * The getter of HTMLTabPanel * @return HTMLTabPanel */ public HtmlTabPanel getMytabPanel() { List<List<UISelectItem>> selectItemTab=SelectItemConverter.listMapToUISelectItems(dataBase.getListVarContent(chosenVariablesNames)); /**create a tabPanel*/ FacesContext context = FacesContext.getCurrentInstance(); Application application = context.getApplication(); mytabPanel = (HtmlTabPanel)application.createComponent(HtmlTabPanel.COMPONENT_TYPE); /**for each entry in the displayContentList, create a tab*/ for (int i=0; i<selectItemTab.size();i++){ HtmlTab tab = (HtmlTab)application.createComponent(HtmlTab.COMPONENT_TYPE); tab.setLabel("Variable: " + variableNames[i]); /**the selectManyItems*/ selectMany=new UISelectMany(); selectMany.setId("sel"+i); selectMany.setSelectedValues(listSelContMatrix[i]); selectMany.setValid(true); selectMany.getChildren().addAll(selectItemTab.get(i)); tab.getChildren().add(selectMany); mytabPanel.getChildren().add(tab); } return mytabPanel; }
Comme vous pouvez le voir, j'ai essayé un peu toutes les méthodes de récupération des données, mais rien à faire, les listes ne sont pas NULL mais tous leurs items sont NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public String validateContent(){ /**dataBase.writeInUserLog();*/ for (int i=0; i<listSelContMatrix[0].length; i++){ if (listSelContMatrix[0][i]!=null) System.out.println("selected: " + listSelContMatrix[0][i]); } for (int i=0; i<selectMany.getSelectedValues().length; i++){ if (selectMany.getSelectedValues()[i]!=null) System.out.println("selected1: " + selectMany.getSelectedValues()[i]); } if (selectMany.getSubmittedValue()!=null) System.out.println("selected2: " + selectMany.getSubmittedValue().toString()); return OUTCOME_CONTENT; }
Si quelqu'un pouvait m'éclairer, ce serait très sympathique.
Merci!
Partager