Projets
Pages enfant
  • Affichage dynamique suite à un clic-bouton

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Remarque
titleA compléter

Schéma ou exemple

Piste 1 : utiliser le

...

rendered

... celui du form ou d'un panelGrid avec un booléen dans le contrôleur (ici showUserForm)

...

Là ça marche, au clique le renderer rendered du formulaire est positionné à true et le panel est rafraichi.

...

Bloc de code
        import javax.faces.component.UIComponent;
        [...]
        private UIComponent panelUserForm;

        public void showFormNewUser() {		
                for (UIComponent component : this.panelUserForm.getChildren()) {
			component.setRendered(true);
		}
        }
        public void hideFormNewUser() {
                for (UIComponent component : this.panelUserForm.getChildren()) {
			component.setRendered(false);
		}
        }

Pour améliorer encore un peu

On intègre le bouton d'affichage du formulaire dans le panel et on switch les rendered

Bloc de code


<h:panelGrid id="panelFormAddUser" binding="#{welcomeController.panelUserForm}" columns="1" rendered="true">
	 <h:form id="formshowAddUser" rendered="true">
                <p:commandButton value="Afficher formulaire" update="@form,panelFormAddUser,growl"
	               action="#{welcomeController.toogleFormNewUser}" >
	        </p:commandButton>

        <h:form id="formAddUser" rendered="false">
	[...]
	</h:form>

        <h:form id="formhideAddUser" rendered="false">
	        <p:commandButton value="Masquer formulaire" update="panelFormAddUser,growl"
			action="#{welcomeController.toogleFormNewUser}" >
		</p:commandButton>
	</h:form>
</h:panelGrid>

Désormais aux cliques on appellera une seule méthode :

Bloc de code

        import javax.faces.component.UIComponent;
        [...]
        private UIComponent panelUserForm;

        public void toogleFormNewUser() {		
                for (UIComponent component : this.panelUserForm.getChildren()) {
			if (component.getAttributes().get("rendered").toString().equals("true"))
				component.setRendered(false);
			else
				component.setRendered(true);
		}
        }