Lorsqu'une méthode particulière dans mon bean géré est appelée, je veux savoir si je suis dans la phase de restauration du cycle de vie JSF. Comment puis-je faire ceci?JSF: Comment puis-je vérifier si je suis dans la phase "Restore View"?
4
A
Répondre
12
Si vous êtes déjà sur JSF 2.0, vous pouvez le vérifier en utilisant FacesContext#getCurrentPhaseId()
:
if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RESTORE_VIEW) {
// Restore view called.
}
Mais si vous êtes encore sur 1.x JSF encore, votre meilleure station avec une PhaseListener
qui écoute sur PhaseId.RESTORE_VIEW
, définit un indicateur/bascule/jeton dans la portée de la demande pendant beforePhase()
et supprime le pendant afterPhase()
. Laissez la méthode getter du bean vérifier sa présence dans l'étendue de la requête.
Cela dit, pour quoi en avez-vous besoin exactement? Je n'ai jamais eu besoin d'une telle exigence fonctionnelle. Le constructeur du bean ou une méthode annotée @PostConstruct
n'est-il pas probablement un meilleur endroit pour faire des choses d'initialisation comme ça?
Questions connexes
- 1. Comment vérifier si je suis en phase d'exécution ou de conception?
- 2. Comment vérifier si je suis dans une transaction?
- 3. skip jsf lifecylce phase
- 4. Comment puis-je vérifier si je suis dans le cadre supérieur?
- 5. Comment puis-je vérifier si je suis dans une version de débogage ou de publication dans une application Web?
- 6. Comment changer la vue si je ne suis pas présent dans la classe viewController?
- 7. Comment puis-je vérifier dans PHP que je suis dans un contexte statique (ou non)?
- 8. Dans un Joomla personnalisé! modèle, comment puis-je déterminer si je suis sur la page d'accueil?
- 9. Comment puis-je savoir si je suis dans un IFrame spécifique
- 10. Comment savoir si je suis statique ou un objet?
- 11. Comment gérer l'exception dans la phase Flush?
- 12. Comment savoir si je suis connecté à Internet
- 13. Rational ClearCase + VOB Restore
- 14. Comment vérifier si je suis actuellement le propriétaire de la base de données pour SQL 2000/2005/2008
- 15. suis-je dans l'application de la console?
- 16. Comment puis-je vérifier si la chaîne $ _GET ["s"] contient ++++?
- 17. Comment puis-je vérifier si une variable existe dans Scheme?
- 18. Comment vérifier si un UIComponent JSF est valide dans un fichier jsp?
- 19. TeamCity restore
- 20. Comment puis-je vérifier si OpenSQLConnection a réussi (dans Mathematica)?
- 21. Comment puis-je savoir si je suis à la dernière rangée d'un ensemble de données?
- 22. Comment vérifier si la fenêtre est active?
- 23. Comment puis-je vérifier si un ensemble de ressources contient une clé spécifique dans une page JSF?
- 24. Vérifier si la table existe dans C#
- 25. check-in view si la validation est passée
- 26. JSF - Mise à jour du modèle dans la phase d'application d'invocation
- 27. comment mettre en phase? Si variable = (condition1) + (n'importe quoi)
- 28. Comment puis-je savoir si je suis dans une pile d'exceptions Delphi?
- 29. Comment contourner la validation dans dataTable? JSF
- 30. Comment puis-je vérifier si une application fonctionne sous Android?
Im uniquement sur JSF 1.x. La raison pour laquelle je veux faire quelque chose comme ceci est que pendant la phase de restauration de la vue, une méthode est appelée sur mon bean géré que je n'ai pas besoin d'appeler et c'est particulièrement cher. Donc, je veux mettre dans la logique qui dit "Si en vue de restauration, ne faites rien". – BestPractices
Avez-vous considéré l'inverse? Vérifier si vous êtes dans RENDER_RESPONSE. De cette façon, vous pouvez simplement utiliser 'if (FacesContext.getCurrentInstance(). GetRenderResponse()) {}' à la place qui est déjà disponible depuis JSF 1.0. Mais si le haricot lui-même est demandé, alors je le mettrais dans le constructeur du haricot. Sauf si le bean a trop de responsabilités, mais c'est un autre problème;) – BalusC
OK-- J'ai pensé à vérifier getRenderResponse, mais je ne savais pas si cela vous dirait de façon concluante si vous étiez dans la phase RestoreView. Je vais l'essayer ... – BestPractices