在Fusion web application中,类似ADF的Manged bean和binding container的生命延续是通过scope属性进行设定的。scope属性有6种类型: Applicaiton scope, Session, Page flow scope, Request scope, Backing bean scope, View scope。
可以通过RequestContext API来得到scope信息。
1,这6种scope的定义和区别如下:
Applicaiton scope: 应用的整个生命周期,从ADF应用在服务器中启动被访问开始。
Session scope: 在一个session中有效;不同的浏览器window会使用同一个session,可以使用page flow scope或view scope来区分不同window中的对象。
Page flow scope: 不同的有边界的task flow具有不同的page flow scope。Page flow scope不是标准的JSF scope,所以,在引用manged bean的时候,要使用#{pageFlowScope.MyBean}的形式,Backing bean scope和View scope类似。
Request scope: 该级别object的有效期是从一次HTTP request开始,到这次HTTP request结束。
Backing bean scope: 只使用在JSFF和declarative component中,也是从一次HTTP request开始到结束。
View scope: View ID变化,view scope就发生变化。
2,Relationship Between Scopes and Page Flow:
3,总结
1)在有边界的task flow中,不要使用applicaiton scope和session scope,这两种类型的scope的生命周期比task flow要长。
2)在有边界的task flow中传递值的时候,请使用page flow scope;
3)如果需要为UI组件存储信息,请作用request scope;
4)JSFF和declarative component对应的backing bean scope只能是backing bean scope。