JSF(JavaServer Faces)應用程式框架的簡單程式是自動管理生命週期階段,並允許您手動管理。JSF(JavaServer Faces)應用程式的生命週期從用戶端對頁面發出HTTP請求時開始,並在伺服器響應頁面時結束。
JSF生命週期分為兩個主要階段:
在執行階段,當第一次請求時,構建或恢復應用程式檢視。 對於其他後續請求,執行其他操作,如應用請求引數值,對元件值執行轉換和驗證,受託管的bean
將使用元件值進行更新,並呼叫應用程式邏輯。
執行階段被進一步分成以下子階段。
當用戶端請求一個JavaServer Faces頁面時,JavaServer Faces實現開始恢復檢視階段。 在此階段,JSF將檢視中的元件構建為請求頁面,線性事件處理程式和驗證器的檢視,並將檢視儲存在FacesContext範例中。
如果對該頁面的請求是回發,那麼與該頁面相對應的檢視已經存在於FacesContext範例中。 在此階段,JavaServer Faces實現通過使用儲存在用戶端或伺服器上的狀態資訊來還原檢視。
在此階段,在回發請求期間恢復元件樹。 元件樹是表單元素的集合。樹中的每個元件通過使用其decode(processDecodes())
方法從請求引數中提取其新值。 之後,該值將本地儲存在每個元件上。
FacesContext.responseComplete()
方法。在此階段,JavaServer Faces通過使用其validate()
方法來處理在元件上註冊的所有驗證器。 它檢查指定驗證規則的元件屬性,並將這些規則與為元件儲存的本地值進行比較。 JavaServer Faces還完成了沒有將immediate
屬性設定為true
的輸入元件的轉換。
renderResponse
方法,則JavaServer Faces實現將跳過「渲染響應」階段。FacesContext.responseComplete
方法。確保資料有效後,它遍歷元件樹,並將相應的伺服器端物件屬性設定為元件的本地值。 JavaServer Faces實現只更新輸入元件的value
屬性指向bean
屬性。 如果本地資料無法轉換為bean
屬性指定的型別,生命週期將直接前進到「渲染響應」階段,以便重新呈現頁面並顯示錯誤。
renderResponse()
方法,則JavaServer Faces實現將跳過「渲染響應」階段。FacesContext.responseComplete()
方法。在此階段,JSF處理應用程式級事件,例如提交表單或連結到另一個頁面。
現在,如果應用程式需要重定向到其他Web應用程式資源或生成不包含任何JSF元件的響應,則可以呼叫FacesContext.responseComplete()
方法。
之後,JavaServer Faces實現將控制轉移到「渲染響應」階段。
這是JSF生命週期的最後階段。 在此階段,JSF將構建檢視並將許可權委託給相應的資源來呈現頁面。
如果頁面包含h:message
或h:messages
標籤,頁面上會顯示任何排隊的錯誤訊息。
在渲染檢視的內容之後,儲存響應的狀態,以便後續請求可以存取它。 恢復檢視階段可以使用儲存的狀態。
在此階段,請求的檢視作為對用戶端瀏覽器的響應。 檢視渲染是以HTML或XHTML生成輸出的過程。 所以,使用者可以在瀏覽器看到它。
在渲染過程中採取以下步驟。
index.xhtml
網頁進行初始請求時,編譯應用程式。EL
表示式表示的元件和與其關聯受託管bean
屬性填充元件樹。