Bonjour à tous,
Je rencontre un problème avec un de mes beans qui est de type ViewScoped. Lors de son initialisation je sauvegarde / initialise plusieurs variables. Dans ma page xhtml je possède un bouton me dirigeant vers une autre page auquel j’associe un paramètre ; celui-ci est récupéré dans mon bean (et initialisé au tout début du bean). La variable n'est donc pas vide.
Hors quand je change de page, cette nouvelle page va vouloir utiliser cette variable qui est soit disant null. Si je passe mon bean en SessionScoped aucun problème tout fonctionne. Néanmoins ce bean a pour vocation d’être en view, sa méthode postconstruct doit être appelé à chaque nouveau chargement.
Je vous joins mes fichiers.
Mon bouton :
Mon bean :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <h:commandButton value="Modifier" action="#{pageInstanceBean.modifier()}"> <ui:param name="instParam" value="#{pageInstanceBean.inst}"/> </h:commandButton>
J'avais cru comprendre qu'un viewscoped restait tant que l'on ne changeait pas de page. Est-ce moi qui ne comprend pas le fonctionnement d'un bean de type view, ou bien est-ce une erreur de codage ou autre ?
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
34 import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; @ManagedBean @ViewScoped public class PageInstanceBean implements Serializable { private static final long serialVersionUID = 1L; //... private Instance inst; @PostConstruct public void init() { FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY); inst = (Instance) faceletContext.getAttribute("i"); //... } //... public String modifier() { return "instanceAdmin"; } public Instance getInst() { return inst; } }
Partager