j'ai un haricot avec une liste de données globales dans @ApplicationScoped comme ceci:Incompatibilité avec @ManagedProperty
@ApplicationScoped
@ManagedBean
public class GlobalData
{
private List data = new ArrayList();
//getter and setterss goes here..
public void addSomeData(Object item) { data.add(item); }
}
aussi j'ai un haricot @ViewScoped qui fait référence GlobalData par un @ManagedProperty comme celui-ci:
@ManagedBean
@ViewScoped
public class SomePageController
{
@ManagedProperty(value="#{globalData}"
private GlobalData theGlobalData;
//also public getter and setter of theGlobalData
}
le plus drôle vient quand dans SomePageController je veux ajouter un élément à la liste des GlobalData comme ceci:
public void someUIAction()
{
SomeItem item = bussinesProcess();
theGlobalData.addSomeData(item);
}
car à chaque fois que l'on appelle unUIAction, leGlobalData pointe vers une instance totalement nouvelle avec des données vides !!!! Je peux confirmer cela parce que j'ai ajouté quelques informations loggin comme ceci:
public void someUIAction()
{
SomeItem item = bussinesProcess();
theGlobalData.addSomeData(item);
System.out.println(theGlobalData.toString());
}
puis je suis la sortie suivante:
[email protected]
[email protected]
[email protected]
......
une nouvelle instance à chaque demande, je googlé mais la seule information que je pouvais obtenez est avec this guy avec un problème similaire, encore j'ai aussi essayé il est la solution sans chance = (
** ** information additionnelle:. im développement avec tomee 1.5.2 profil web Wich inclut Apache MyFaces aussi j'ai vérifié que toutes les annotations sont de l'emballage javax.faces.bean
ajouté un +1 car c'est une erreur assez commune mais j'ai juste chiné toutes les anontations et ils sont tous du paquet javax.faces.bean, honnêtement j'espérais que c'était la cause ... = S – Harima555