2
我有一個使用JSP編碼的應用程序,現在我們正在將這些頁面遷移到Facelets的頁面。從Facelets獲取UIViewRoot的組件樹作爲視圖
我們的PhaseListeners之一是操縱組件樹,因爲它需要找出樹中的一些組件並提取它的一些值。但對於Facelets,UIViewRoot不會返回任何子節點。
如何獲得與Facelets相同類型的功能?
由於提前, 聖保羅
我有一個使用JSP編碼的應用程序,現在我們正在將這些頁面遷移到Facelets的頁面。從Facelets獲取UIViewRoot的組件樹作爲視圖
我們的PhaseListeners之一是操縱組件樹,因爲它需要找出樹中的一些組件並提取它的一些值。但對於Facelets,UIViewRoot不會返回任何子節點。
如何獲得與Facelets相同類型的功能?
由於提前, 聖保羅
檢索UIViewRoot這一行應該工作:
FacesContext.getCurrentInstance().getViewRoot
我的猜測是,你正在試圖操縱組件樹在JSF生命週期的第一個階段。 (link)
第一階段包括檢索所請求頁面的視圖,即組件樹。因此,您可以在此階段完成後探索組件樹。
使用
phaseEvent.getPhaseId()
看到你在工作哪個階段。
在RESTORE_VIEW階段,而無需爲JSP頁面問題工作該監聽器被調用。 Facelets並非如此,但感謝您的評論,我嘗試了另一個階段,RENDER_REPONSE,現在它和以前一樣工作。 – 2009-06-29 14:34:59