2009-06-26 7 views
2

J'ai une application qui a été codée avec des JSP et maintenant nous sommes en train de migrer vers les pages à Facelets. L'un de nos PhaseListeners manipule l'arbre des composants, car il a besoin de trouver certains composants dans l'arbre et d'en extraire certaines de ses valeurs. Mais avec Facelets, UIViewRoot ne renvoie aucun enfant.Obtenir l'arborescence des composants de UIViewRoot avec facelets comme vue

Comment puis-je obtenir le même type de fonctionnalité avec Facelets?

Merci à l'avance, Paulo

Répondre

3

Récupération UIViewRoot avec cette ligne devrait fonctionner:

FacesContext.getCurrentInstance().getViewRoot 

Je pense que vous essayez de manipuler l'arborescence des composants dans la première phase du cycle de vie du JSF. (link)

La première phase consiste à récupérer la vue, c'est-à-dire l'arborescence des composants, pour la page demandée. Par conséquent, vous pouvez simplement explorer l'arborescence des composants une fois cette phase terminée.

Utilisez

phaseEvent.getPhaseId() 

pour voir quelle phase vous travaillez.

+0

L'auditeur a été appelé pendant la phase de RESTORE_VIEW, qui a travaillé sans problème pour les pages JSP. Ce n'était pas le cas avec Facelets, mais grâce à votre remarque, j'ai essayé une autre phase, RENDER_REPONSE, et maintenant cela fonctionne comme avant. –

Questions connexes