了解ADF生命周期中的ADF绑定
在本文中,我將重點介紹ADF綁定層,并探討當最初從瀏覽器請求帶有某些數據的ADF頁面時,它如何工作。
Oracle ADF提供了自己的JSF生命周期擴展版。 實際上,ADF擴展了標準JSF生命周期實現類,并提供了ADF階段偵聽器,該偵聽器會在階段事件之前和之后得到通知。 這是擴展了相應ADF階段的JSF生命周期階段的列表:
- 恢復視圖
- ADF初始化上下文
- 應用請求值
- Craft.io驗證
- 更新模型值
- ADF驗證模型更新
- 調用申請
- ADF元數據提交
- 渲染響應
- ADF準備渲染
請求有兩種類型: 初始請求和回發 。 在初始請求期間,生命周期非常短。 在“ 還原視圖”階段之后,生命周期會跳至“ 渲染響應”階段,跳過其余階段。
當用戶最初從瀏覽器請求ADF頁面時,應用服務器會使用一系列Servlet過濾器對請求進行一些預處理。 其中之一是ADFBindingFilter 。 此篩選器在Web.xml文件中定義,并且需要將ADF綁定應用于操作。 因此,當此過濾器處理請求時,它將在當前會話中查找綁定上下文 ,如果不存在,則將創建一個新實例。 綁定上下文 作為DataBindings.cpx文件的運行時表示形式,包含頁面及其頁面定義文件之間的映射。 它還包含應用程序中使用的數據控件的列表。 有了所有這些,框架就調查了哪些數據控件和哪些綁定容器將參與請求。 ADFBindingFilter查找或創建每個必需的數據控件的實例,并調用其beginRequest方法。
綁定上下文初始化后,控件將返回到負責處理JSF生命周期階段的Faces Servlet。 當JSF Lifecycle處理Restore View階段時,它將使用beforePhase事件通知ADF階段偵聽器 。 ADF階段偵聽器又將事件分派給所有內部階段偵聽器,例如Update Binding Listener 。 然后通過在Binding Context上調用findBindingContainerByPath來初始化所需的綁定容器 。
因此, 綁定上下文, 數據控件和綁定容器已在請求的開始處創建。 該框架使用ADF PageLifeCycle類,以通過ADF階段擴展JSF生命周期。 ADF階段偵聽器偵聽Restore View階段的afterPhase事件,并在ADF PageLifeCycle類上調用適當的方法。 這樣,標準的JSF restoreView階段已擴展為兩個ADF階段-InitContext和PrepareModel 。 在PrepareModel階段, ADF PageLifecycle在綁定容器上調用刷新方法,并將階段標識符作為參數傳遞。
在準備模型期間, 綁定容器將執行其refresh屬性設置為prepareModel的任何可執行條目(迭代器,操作等)。 這篇文章詳細介紹了refresh屬性。
在考慮對該頁面的初始請求時,我們將跳過下一個生命周期階段,并跳至渲染響應階段。
ADF階段偵聽器偵聽“ 渲染響應”階段的beforePhase事件,并通過調用一個ADF PageLifeCycle類的對應方法在“ ADF階段準備渲染”中對其進行擴展。 準備渲染階段也稱為渲染模型 。 在此階段,框架再次在綁定容器上調用refresh方法,并且此時將其refresh屬性設置為renderModel的那些迭代器被執行。
JSF Lifecycle將控件轉發到頁面渲染器,在這里渲染UI組件時,它們需要來自基礎模型的數據。 刷新屬性設置為延遲 (默認值)的那些迭代器將在此處執行。
在請求的最后, ADF綁定篩選器在參與請求的每個數據控件上調用endRequest方法。 這導致基礎應用程序模塊被釋放回應用程序模塊池。
而已!
翻譯自: https://www.javacodegeeks.com/2015/06/understanding-adf-bindings-in-adf-lifecycle.html
總結
以上是生活随笔為你收集整理的了解ADF生命周期中的ADF绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10命令重置安全和组策略(Win1
- 下一篇: Excel快捷键输入公式(Excel输入