Bonjour,
J'ai créé un formulaire avec un bouton modifier qui utilise ajax. Il doit poster via un execute="@form" tout le formulaire.
Bizarrement cela fonctionne très bien la 1ère fois mais au second essai cela ne prend plus en compte les modifications du formulaire bien qu'il effectue la requête ajax et méthode du render.
Le formulaire :
Le TermeBeanCode:
1
2
3
4
5
6
7
8
9
10
11
12 <ui:define name="content"> <h:form id="formRecherche"> <h:outputLabel value="avec Définition" for="avecDefinition" /> <h:selectBooleanCheckbox value="#{termeBean.rechercheBean.avecDefinition}" id="avecDefinition" /> <h:commandButton value="Modifier" id="btnRechercher"> <f:ajax execute="@form" render="listeTermesSpecifique" id="ajax"/> </h:commandButton> <p><h:outputText value="#{termeBean.listeTermesSpecifique}" id="listeTermesSpecifique" escape="false" /></p> </h:form> </ui:define>
Le rechercheBeanCode:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 @ManagedBean(name = "termeBean") @Service("termeBean") public class TermeBean implements InitializingBean { private Integer idTerme; private Topic terme; @Autowired private RechercheBean rechercheBean; @Override public void afterPropertiesSet() throws Exception { } public Integer getIdTerme() { return idTerme; } public void setIdTerme(Integer idTerme) { this.idTerme = idTerme; this.terme = rechercheBean.getMondeca().getTermePreferentiel(idTerme); } public RechercheBean getRechercheBean() { return rechercheBean; } public void setRechercheBean(RechercheBean rechercheBean) { this.rechercheBean = rechercheBean; } public String getListeTermesSpecifique() { System.out.println("getListTermesSpecifique"); return "Option DF : " + rechercheBean.getAvecDefinition().toString() + " - Groupe : " + rechercheBean.getAvecGroupe().toString(); } public Topic getTerme() { return terme; } public void setTerme(Topic terme) { this.terme = terme; } }
Dans les requêtes ajax envoyé par le navigateur, je vois bien pourtant les éléments du formulaire qui ont été modifié. C'est donc le "RechercheBean" qui n'est pas mis à jour a partir du second appel, mais je ne sais pas pourquoi.Code:
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
27
28
29
30
31
32 @ManagedBean(name = "rechercheBean") @Service("rechercheBean") public class RechercheBean implements InitializingBean { private Boolean avecDefinition = false; public RechercheBean() { System.out.println("RechercheBean créé"); } @Override public void afterPropertiesSet() throws Exception { } // Accesseurs public Boolean getAvecDefinition() { return avecDefinition; } public void setAvecDefinition(Boolean avecDefinition) { this.avecDefinition = avecDefinition; } }
Merci pour votre aide