Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf pageflowScope在ADF Faces中的具体功能是什么?_Jsf_Jsf 2_Oracle Adf_Trinidad - Fatal编程技术网

Jsf pageflowScope在ADF Faces中的具体功能是什么?

Jsf pageflowScope在ADF Faces中的具体功能是什么?,jsf,jsf-2,oracle-adf,trinidad,Jsf,Jsf 2,Oracle Adf,Trinidad,ADF faces公开了一个新的作用域(称为pageflow),作为托管bean的正常会话、请求、查看作用域的补充。这个范围做什么?它的优点和缺点是什么?放置在pageflowScope中的对象何时会被垃圾回收?ADF有一个任务流的概念,在这个概念中,您可以使用导航规则将一些相关页面放在一起。页面流范围涵盖了此类任务流的执行。这可能需要比一个请求更长的时间,并且可以跨越多个视图,因此此作用域比请求和视图作用域长,但比会话作用域小。当您离开组成任务流的页面时,范围将被破坏。作为一个非常简单的用例,

ADF faces公开了一个新的作用域(称为
pageflow
),作为
托管bean的正常会话、请求、查看作用域的补充。这个范围做什么?它的优点和缺点是什么?放置在
pageflowScope
中的对象何时会被垃圾回收?

ADF有一个任务流的概念,在这个概念中,您可以使用导航规则将一些相关页面放在一起。页面流范围涵盖了此类任务流的执行。这可能需要比一个请求更长的时间,并且可以跨越多个视图,因此此作用域比请求和视图作用域长,但比会话作用域小。当您离开组成任务流的页面时,范围将被破坏。作为一个非常简单的用例,请考虑一个向导,在提交最终结果进行处理之前,您必须填写几页数据。

pageFlowScope bean的范围是ADF控制器的“任务流”概念,即无限任务流(UTF)或有界任务流(BTF)。在ADF中,任务流是在一个流中聚集在一起的页面或页面片段的集合,或者换句话说,是一组定义的活动,包括路由器、方法调用和页面/页面片段调用

pageFlowScope生命周期/范围是任务流的生命周期/范围。当它们第一次通过任务流中的代码或EL(不一定是任务流的开始)访问时,它们就存在了,当任务流退出(或用户注销或会话超时)时,它们就不在范围之内了。由于任务流可以以堆叠的方式调用任务流,因此在任何时候都可能有几个pageFlowScope bean在起作用

pageFlowScope并没有太多的优点/缺点,而是应该在何时使用它们。pageFlowScope bean携带任务流的状态,并允许任务流的状态与较大范围的会话和应用程序范围bean分开,并且不像较小范围的请求、backingBean和视图范围bean那样频繁地重新创建。例如,任务流的传入和传出参数非常适合存储在pageFlowScope中。作为一个反例,在当前页面上操作的值最好放在request/backingBean/view范围内

pageFlowScope bean的另一个优点是它们能够识别多浏览器选项卡。如果同一会话有两个应用程序实例在单独的浏览器选项卡中打开,ADF将为每个选项卡生成两个单独的pageFlowScope bean,而sessionScope只生成一个。这允许任务流在每个选项卡上具有独立的状态


最后解决最后一个问题,pageFlowScope bean中的对象只有在pageFlowScope bean本身超出范围时才可用于垃圾收集,即当任务流退出、用户注销或会话超时时。当然,通常的警告适用于如果程序员在pageFlowScope bean上保留了一个间接句柄,那么在这种情况发生之前,该bean不会成为垃圾收集的候选对象。

除了上述文章之外,pageFlowScope的主要用途是 ADF边界taskflow具有不同的活动。示例视图、方法调用、任务流返回等

PageFlowScope用于在任务流中的活动之间共享数据。
任务流的输入参数和输出参数也存储在pageflow作用域中。

简单地说

pageFlowScope:只要用户从一个页面导航到另一个页面,此范围就可用。如果用户打开一个新的浏览器窗口并开始导航,则该系列窗口将具有自己的pageFlowScope作用域

  • 每个ADF任务流实例都被授予其自己的页面流范围

  • 当您离开任务流时,页面流作用域不会被破坏,除非您使用任务流返回活动并调用终结器

  • 您只能通过使用任务流返回活动来访问以前留下的页面流范围

  • 如何以编程方式访问pageFlowScope对象

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