variables de session pas bonne
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:
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:
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:
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 ?