2009-06-26 7 views
2

我有一個使用JSP編碼的應用程序,現在我們正在將這些頁面遷移到Facelets的頁面。從Facelets獲取UIViewRoot的組件樹作爲視圖

我們的PhaseListeners之一是操縱組件樹,因爲它需要找出樹中的一些組件並提取它的一些值。但對於Facelets,UIViewRoot不會返回任何子節點。

如何獲得與Facelets相同類型的功能?

由於提前, 聖保羅

回答

3

檢索UIViewRoot這一行應該工作:

FacesContext.getCurrentInstance().getViewRoot 

我的猜測是,你正在試圖操縱組件樹在JSF生命週期的第一個階段。 (link

第一階段包括檢索所請求頁面的視圖,即組件樹。因此,您可以在此階段完成後探索組件樹。

使用

phaseEvent.getPhaseId() 

看到你在工作哪個階段。

+0

在RESTORE_VIEW階段,而無需爲JSP頁面問題工作該監聽器被調用。 Facelets並非如此,但感謝您的評論,我嘗試了另一個階段,RENDER_REPONSE,現在它和以前一樣工作。 – 2009-06-29 14:34:59