ADF: 理解Manage bean 的scope

在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。

 

你可能感兴趣的:(bean,object,session,JSF,application,binding)