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:
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>
où list[i] serait les valeurs sélectionnées par l'utilisateur.
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<rich:tabPanel id="tabPanel" switchType="client" binding="#{dataBase.mytabPanel}"  />
Voilà maintenant comment est codé mon bean:
- la méthode qui lie les composants
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;
	}
- 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
 
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;
	}
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.

Si quelqu'un pouvait m'éclairer, ce serait très sympathique.

Merci!