Bonjour,
Je dois réaliser un formulaire dynamique, je n'ai donc pas d'autre choix que de créer ce formulaire côté bean, puis de le "binder" côté xhtml. Il y a deux difficultés supplémentaires : j'aimerais que mon bean soit en request, et il faut que le formulaire dynamique puisse être rafraichit en fonction d'une valeur choisie dans un selectOneMenu.

Côté xhtml j'ai donc ç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
 
<h:selectOneMenu style="width:200px" id="selectModele"
	value="#{monBean.valeur}">
	<f:selectItems value="#{monBean.valeurs}" />
	<a4j:support event="onchange" process="outputPanelQuestionPanelGrid"
		reRender="outputPanelQuestionPanelGrid"
		action="#{monBean.ajouterQuestions}"
		ajaxSingle="true" />
	<f:validator validatorId="creationVisiteValidator" />
</h:selectOneMenu>
 
...
 
<a4j:outputPanel id="outputPanelQuestionPanelGrid">
	<rich:panel rendered="#{monBean.panelRendered}">
		<f:facet name="header">
			<h:outputText value="Champs spécifiques"></h:outputText>
		</f:facet>
		<h:panelGrid binding="#{monBean.questionPanelGrid}" />
	</rich:panel>
</a4j:outputPanel>
Dans la première partie, le selectOneMenu, qui doit rafraichir le panel qui est dans la deuxième partie.
Côté java, j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
	public void ajouterQuestions() {
		questionPanelGrid.getChildren().clear();
		Modele modele = modeleService.charger(valeur);
		if (modele.getTypeUi() != null) {
			QuestionOw question = new QuestionOw(modele.getTypeUi().getChampTypeUis(), valeurChampService);
			for (UIComponent component : question.getListComponent()) {
				questionPanelGrid.getChildren().add(component);
			}
		}
 
	}
question.getListComponent() me renvoie bien une liste d'UIComponent, qui sont bien ajoutés à mon questionPanelGrid. Mais côté navigateur, rien ne s'affiche.
J'ai essayé de mettre mon bean en session, pour voir. Et là, tout fonctionne bien, les UIComponent que j'ajoute sur mon panelGrid s'affichent bien dans le navigateur.

Info supplémentaire : mon bean est en "keepAlive" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<a4j:keepAlive beanName="monBean" ajaxOnly="true"/>
Je ne donne pas tout le contenu du bean (qui fait 1000 lignes) ni du xhtml (200 lignes), sinon ça risquerait d'être un peu indigeste, donc j'espère que je n'oublie rien.

Je crois que j'ai un peu de mal à cerner le fonctionnement exact d'un binding.

Est-ce que quelqu'un connaitrait une solution ?
Merci.