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 ?
Version imprimable
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 ?
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:
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:
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:
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 pageCode:
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é