Bonjour

Je rencontre un problème pour submiter un formulaire avec JSF. Il y a deux boutons qui peuvent submiter le formulaire. Jusqu'ici aucun problème. Voici le code de mon managed bean.

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
 
public class TotoBean {
 
	private String attribut1;
 
	private String attribut2;
 
	public String process1() {
		System.out.println("");
		System.out.println("process1");
		System.out.println("attribut1 = " + this.attribut1);
		System.out.println("attribut2 = " + this.attribut2);
		System.out.println("");
		return null;
	}
 
	public String process2() {
		System.out.println("");
		System.out.println("process2");
		System.out.println("attribut1 = " + this.attribut1);
		System.out.println("attribut2 = " + this.attribut2);
		System.out.println("");
		return null;
	}
... getters et setters
}

Et ici le code xhtml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<h:form id="form">
	<h:inputText value="#{totoBean.attribut1}" />
	<h:commandButton action="#{totoBean.process1}" value=" > " />
	<br/>
	<br/>
	<h:inputText value="#{totoBean.attribut2}" />
	<h:commandButton action="#{totoBean.process2}" value=" OK " />
</h:form>
Lorsque je clique sur le bouton " > ", la méthode process1() est bien exécutée et lorsque je clique sur " OK ", la méthode process2() est bien exécuté. Les traces affichent correctement ce qui a été rentré dans les inputText.

Mais voici mon problème. Je souhaite n'afficher la deuxième partie de la page (2ème input text et 2ème bouton) que si la première partie a été renseignée. Voici donc mon code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<h:form id="form">
	<h:inputText value="#{totoBean.attribut1}" />
	<h:commandButton action="#{totoBean.process1}" value=" > " />
	<br/>
	<br/>
	<h:inputText rendered="#{totoBean.attribut1 != null}" value="#{totoBean.attribut2}" />
	<h:commandButton rendered="#{totoBean.attribut1 != null}" action="#{totoBean.process2}" value=" OK " />
</h:form>
Ça fonctionne pour la première étape. Lorsque la page s'affiche pour la première fois, seuls le 1er input text et le premier bouton apparaissent. Je renseigne le champ de texte puis je clique sur " > ". Là, le deuxième champs et le deuxième bouton apparaissent. Je renseigne le deuxième champ et c'est là que survient le problème. Quand je clique sur le deuxième bouton (le bouton " OK "), la méthode process2() n'est pas exécutée. La page se recharge en effaçant ce qui a été rentré dans le deuxième champ.

Que se passe-t-il ?

Merci d'avance pour votre aide.