2013-01-13 25 views
3

ADF面臨公開的新範圍(稱爲pageflow),並添加到正常會話中,請求查看範圍爲managed beans。這個範圍做什麼?它有什麼優點和缺點?什麼時候放進pageflowScope裏面的物品會被垃圾收集?pageflowScope在ADF Faces中做了什麼?

回答

10

pageFlowScope bean的作用範圍是ADF控制器「任務流」的概念,即無界任務流(UTF)或有界任務流(BTF)。在ADF中,任務流是流中彙集的頁面或頁面片段的集合,或者換句話說,定義的一組活動,包括路由器,方法調用和頁面/頁面片段調用。

pageFlowScope生命週期/範圍是任務流的生命週期/範圍。它們在任務流程中首次通過代碼或EL(不一定是任務流程的開始)訪問時出現,並在任務流程退出時退出範圍(或用戶註銷或會話超時) 。由於任務流可以以堆疊的方式調用任務流,因此可以在任何時候都使用servlet pageFlowScope bean。

pageFlowScope沒有太多優點/缺點,而是應該使用它們的時候。 pageFlowScope bean爲任務流攜帶狀態,並允許任務流的狀態與較大範圍的會話和applicationScope bean分開,並且不會像較小的範圍請求,backingBean和視圖範圍的bean那樣頻繁地重新創建。作爲任務流的傳入和傳出參數的示例,理想情況是存儲在pageFlowScope中。作爲要在當前頁面上操作的計數器示例值,最好放在request/backingBean/view範圍中。

pageFlowScope beans的另一個優點是他們知道多瀏覽器選項卡。如果同一個會話在不同的瀏覽器選項卡中打開了應用程序的兩個實例,那麼ADF將爲每個選項卡生成兩個單獨的pageFlowScope bean,這與sessionScope不同,後者只會生成一個。這允許任務流在每個選項卡上具有獨立狀態。

最後,解決您的最後一個問題時,pageFlowScope bean中的對象只有在pageFlowScope bean本身超出範圍時(即任務流退出,用戶註銷或會話超時)纔可用於垃圾回收。當然,如果程序員在pageFlowScope bean上保留一個間接句柄,那麼通常的注意事項就會適用,在這種情況發生之前,bean不會成爲垃圾收集的候選者。

1

ADF具有任務流的概念,您可以在其中組合一些帶有導航規則的相關頁面。頁面流範圍覆蓋了這種任務流的執行。這可能需要比請求更長的時間,並且可能跨越多個視圖,因此此範圍比請求和視圖範圍長,但小於會話範圍。當您離開組成任務流的頁面時,該範圍將被銷燬。作爲一個非常簡單的用例,想象一個嚮導,在提交最終結果進行處理之前,您必須填寫幾頁數據。

1

除上述文章外,pageFlowScope的主要用法是 ADF有界任務流具有不同的活動。示例視圖,方法調用,任務流返回等。

PageFlowScope用於在任務流中的活動之間共享數據。 此外,任務流的輸入參數和輸出參數也存儲在頁面流作用域中。

1

簡單

pageFlowScope:此範圍將可只要用戶從一個頁面導航到另一個。如果用戶打開一個新的瀏覽器窗口並開始導航,那麼這一系列窗口將擁有自己的pageFlowScope範圍。

  1. 每ADF任務流實例被授予擁有自己的頁面流範圍,當你從任務流程導航離開除非你用工作流回報活動和終結是

  2. 頁面流範圍不被破壞,被調用

  3. 您只能通過使用任務流返回活動才能訪問以前離開的Page Flow Scope。

如何以編程方式訪問pageFlowScope對象

AdfFacesContext context= AdfFacesContext.getCurrentInstance(); 
    Map pageFlowScope = context.getPageFlowScope(); 
    pageFlowScope.put("Name","myName");