...
| Remarque | ||
|---|---|---|
| ||
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);
}
}
|