Bonjour,

J'ai une application constituée d'un écran principal et de plusieurs boîtes de dialogue pour paramétrer l'appli.

Je voudrais éviter de charger toutes les boîtes de dialogue dans des div au chargement de l'appli. Je préférerais les charger à la demande.

Voici ce que j'ai essayé de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<f:view>
	<h:form>
		<h:commandButton action="#{lb.display}">
			<f:ajax render="lightbox"/>
		</h:commandButton>
	</h:form>
	<f:subview id="lightbox" rendered="#{lb.rendered}">
		<t:lightbox/>
	</f:subview>
</f:view>
La balise <t:lightbox/> correspond à un composant perso. Il ne pose aucun problème et s'affiche correctement.

Mon ManagedBean :
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
 
@ManagedBean(name="lb")
public class LightboxBean {
	private boolean rendered = false;
 
	public void display() {
		rendered = true;
	}
	public void hide() {
		rendered = false;
	}
	public boolean getRendered() {
		return rendered;
	}
}
Le problème, vous vous en doutez, c'est que ça ne marche pas. Soit l'attribut rendered est initialisé à true, et le composant s'affiche, soit l'attribut est à false, et le composant ne s'affiche pas, bien que la fonction display() soit bien appellée ainsi que getRendered() lorsque je clique sur le bouton.

Je pense que je fais fausse route, mais je ne vois pas de solution à mon problème. Avez-vous une idée de la manière dont je pourrais procéder ?

Merci