Je rencontre un problème vraiment bizzard, je m'explique :
J'ai une pop up qui permet de sauvegardé une affaire, dans cette affaire il y a une entité requerant qui possède une adresse
J'ai dans mon onglet requerant mis la possibilité de définir plusieurs adresse à ce requérant.
J'utilise donc les mêmes champs suivant pour ajouter une nouvelle adresse à l'adresse principale:
Dans ma méthode saveOrUpdate j'ai le code suivant qui va sauvegardé mon affaire :
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
27
28
29
30
31 <ice:outputText value="Rue"></ice:outputText> <ice:inputText value="#{sessionBean.selectedRequerant.adresse.rue}" id="requerantRue" required="true" style="width:300px"></ice:inputText> <ice:outputText value="*" style="color: red;"></ice:outputText> <ice:message style="color: red;" id="requerantRueEmptyError" for="requerantRue" /> <ice:outputText value="No de rue"></ice:outputText> <ice:inputText value="#{sessionBean.selectedRequerant.adresse.noDeRue}" id="requerantNoRue" required="true" style="width:300px"> </ice:inputText> <ice:outputText value="*" style="color: red;"></ice:outputText> <ice:message style="color: red;" id="requerantNoRueEmptyError" for="requerantNoRue" /> <ice:outputText value="No postal , Localite"></ice:outputText> <ice:selectInputText id="AutoCmpTxtFaceNpa" rows="20" width="300" required="true" value="#{sessionBean.requerantNpaLibelle}" valueChangeListener="#{sessionBean.selectLocaliteNpaInputValueChanged}" listVar="npaLocalite" listValue="#{sessionBean.localiteMatch}"> <f:facet name="selectInputText"> <ice:panelGrid columns="3" columnClasses="npa,localite"> <ice:outputText id="AutoCmpCty" value="#{npaLocalite.npa}" /> <ice:outputText id="AutoCmpSt" value="#{npaLocalite.nom}" /> </ice:panelGrid> </f:facet> </ice:selectInputText>
Jusque la tout va bien l'affaire est correctement puté en session .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 try{ selectedAffaireBean.getAffaire().setRequerant(selectedRequerant); Affaire added = remoteAffaireDao.save(selectedAffaireBean .getAffaire()); FaceesContext.getCurrentInstance().getExternalContext().getSessionMap().put("affaire", added); LOG.debug("PUTING AFFAIRE ADRESSE INTO THE SESSION : " + added.getRequerants().iterator().next().getAdresse().toString());
Lorsque j'ajoute une adresse secondaire l'action qui est executé est la suivante :
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
27
28
29
30
31
32
33 public void addRequerantLinkedAdresse(ActionEvent event) { if (selectedRequerant != null) { Adresse adresse = new Adresse(); String [] splited = this.requerantNpaLibelle.split(","); String npa = ""; String localite = ""; if (splited.length == 2) { npa = splited[0]; localite = splited[1]; }else { npa = requerantNpaLibelle; } adresse.setLocalite(localite); adresse.setNpa(npa); adresse.setNoDeRue(selectedRequerant.getAdresse().getNoDeRue()); adresse.setRue(selectedRequerant.getAdresse().getRue()); adresse = remoteAdresseDao.save(adresse); selectedRequerant.getAutresAdresse().add(adresse); Affaire affaire = (Affaire) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("affaire"); LOG.debug("SAVE OTHER ADRESSE MAIN : " + affaire.getRequerants().iterator().next().getAdresse().getRue()); selectedRequerant.setAdresse(affaire.getRequerants().iterator().next().getAdresse()); try { remoteRequerantDao.update(selectedRequerant); }catch (Exception ex) { LOG.debug("Exception while updating AuteurPlans " + ex); } List<AdresseBean> beans = this.rowSelectContollerRequerantAdresses.getAdresseInventory(); beans.add(new AdresseBean(adresse)); this.rowSelectContollerRequerantAdresses.setAdresseInventory(beans); this.selectedRequerant.setAdresse(affaire.getRequerants().iterator().next().getAdresse()); } }
Le problème est lorsque je tente d'accéder a mon objet placer en session
Affaire affaire = (Affaire) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("affaire");
Celui ci contient les valeurs non pas de l'adresse principale qui a servi a sauvegardé l affaire.
Mais contient les valeurs de la secondaire.
Je ne vois pas comment cette variable de session puisse changer dans que je ne le fasse explicitement
Une piste ?
Partager