2009年1月3日星期六

JSF_003:JSF Managed Bean

JSF Managed Bean的配置信息包含在 faces-config.xml 文件中:
<faces-config>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>onlyfun.caterpillar.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>

你可以使用普通Java Bean与UI组件进行binding(即在配置文件faces-config.xml中注册的Managed beans),但最好的选择是使用JSF managed bean,即Backing Bean。
Backing Bean是Managed Bean的一种,由于它只为页面服务,是页面的幕后工作者,因此叫Backing Bean。
它的主要功能是:
(1)访问页面上UI组件的值。
(2)页面上的事件处理。
A backing bean is a convention to describe a managed bean that stores accessors for UI components and event handling code on a JSF page.
It exists forthe duration of a request and should not be used to maintain state
其作用是在真正的业务逻辑Bean和UI组件之间搭起桥梁,在Backing Bean中会呼叫业务逻辑Bean处理请求,或者将业务处理结果放置其中,由UI 组件获取并显示出来。
Backing bean的具体工作包括:

  • 存储 UI组件的属性。

  • 定义 UI组件上的action方法。

  • 作为 UI组件树的实例,根据需要,动态掌控用户界面,比如显示/隐藏某些组件。

当JSF应用启动时,它将解析配置文件faces-config.xml,装载Managed beans类。
当某个组件引用到某个Managed bean时(如使用EL表达式),该Managed bean将被实例化(用默认的构造器),属性也随之被赋上默认值(可在配置文件中指定)。
Managed bean的引用名唯一标识该Managed bean,你可以修改Managed bean类的内容,但在JSF中仍然使用Managed bean的引用名,因此视图不受模型影响。
<managed- bean-scope>的值可以设定为如下值,表示不同的生命周期:

  • application:在Web应用中可见,直到应用程序关闭为止。适用于全局性的bean,如 LDAP 目录。

  • session:在当前会话中(从打开浏览器到关闭浏览器或显式注销之间)可见。

  • request:在当前请求周期内(从页面发送请求到收到响应之间,注意,可能forward多个页面)可见。

  • none:在每次引用时可见,用完后不可见。适用于一个bean被其它beans引用。

没有评论: