Hello,
Nous avons un comportement étrange avec un bean dont la portée est scope, le constructeur du bean n'est pas toujours appellé.
Es-ce que cela provient du fait que nous incluons du contenu avec facelets ?
Hello,
Nous avons un comportement étrange avec un bean dont la portée est scope, le constructeur du bean n'est pas toujours appellé.
Es-ce que cela provient du fait que nous incluons du contenu avec facelets ?
Articles: Richfaces - JBosstools pour JSF.
En effet c'est ce qui me semble étrange mais voici en gros comment ca se passe
depuis mon template je définis une inclusion de menu
et dans mon menu j'ai du code qui ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <div class="navigationContainer"> <ui:insert name="navigation"> <ui:include src="/WEB-INF/includes/content/navigation-dossier.jspx" /> </ui:insert> </div>
ou dans mon navigation bean je fais appel à la méthode navigationPathChange :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 .. <ice:commandLink id="selectDebiteurBeneneficaire" actionListener="#{navigation.navigationPathChange}"> <f:param name="includePath" value="/WEB-INF/includes/custom/debiteurBeneficiaires.jspx" /> <f:param name="libelle" value="#{msg.label_dossier_dossier_debiteur_beneficiaire}" /> <ice:outputText value="#{msg.label_dossier_debiteur_beneficiaire}"/> </ice:commandLink> <br /> ..
Cette méthode me permet de changer le path du contenu dans ma page qui utilise le template:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public void navigationPathChange(ActionEvent event) { // get from the context content include path to show as well // as the title associated with the link. FacesContext context = FacesContext.getCurrentInstance(); Map<String, String> map = context.getExternalContext().getRequestParameterMap(); selectedIncludePath = (String) map.get("includePath"); setLibelle((String) map.get("libelle")); }
Lorsque j'accède à une page qui porte un nom de page différent de la page courrante (par example dossier) aucun problème le constructeur est appellé à chaque changement de page
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <ui:composition template="WEB-INF/includes/templates/page-template-dossier.jspx"> <ui:define name="page-content"> <ui:include src="#{navigation.selectedIncludePath}" /> </ui:define> </ui:composition>
Mais lorsque j'accède au contenu d'une page (donc l'url de la page ne change pas seulement son contenu est modifié) le constructeur n'est lui pas rappellé
Partager