2009-06-26 2 views
2

У меня есть приложение, которое было закодировано JSP, и теперь мы в процессе миграции на страницы в Facelets.Получение дерева компонентов из UIViewRoot с Facelets как вид

Один из наших PhaseListeners управляет деревом компонентов, потому что ему нужно найти некоторые компоненты в дереве и извлечь некоторые из его значений. Но с Facelets, UIViewRoot не возвращает никаких детей.

Как я могу получить тот же тип функциональности с Facelets?

Спасибо заранее, Пауло

ответ

3

Получение UIViewRoot этой линии должны работать:

FacesContext.getCurrentInstance().getViewRoot 

Я предполагаю, что вы пытаетесь манипулировать дерева компонентов в первой фазе жизненного цикла JSF. (link)

Первый этап состоит в том, чтобы получить представление, то есть дерево компонентов, для запрашиваемой страницы. Поэтому вы можете просто изучить дерево компонентов после завершения этой фазы.

Использование

phaseEvent.getPhaseId() 

, чтобы увидеть, какие фазы вы работаете.

+0

Слушатель был вызывается во время фазы RESTORE_VIEW, которая работала без проблем для страниц JSP. Это было не так с Facelets, но благодаря вашему замечанию, я пробовал еще один этап, RENDER_REPONSE, и теперь он работает по-прежнему. –