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:

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>
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
 
 
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());
Jusque la tout va bien l'affaire est correctement puté en session .

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 ?