JSF入门八(Managed Beans)
来源:互联网 发布:qq飞车雷诺官方数据 编辑:程序博客网 时间:2024/05/17 02:45
本文参考
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在配置文件中,您只要修改配置文件,就可以修改 Bean 之间的相依关系。
一、Backing Beans
JSF将Bean的管理集中在faces-config.xml中,一个例子如下:
....<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>....
<managed-bean-scope>设定Bean的存活范围,您可以设定为request、session 与application,您还可以将存活范围设定为none,当设定为none时会在需要的时候生成一个新的Bean,例如您在一个method中想要生成一个临时的Bean,就可以将之设定为none。
二、Beans的配置与设定
JSF预定义会读取faces-config.xml中关于Bean的定义,如果想要自行设置定义文件的名称,我们是在web.xml中提供javax.faces.CONFIG_FILES参数,例如:
<web-app><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>/WEB-INF/beans.xml</param-value></context-param>...</web-app>
定义文件可以有多个,中间以 "," 区隔,例如:
/WEB-INF/navigation.xml,/WEB-INF/beans.xml
一个Bean最基本要定义Bean的名称、类与存活范围,例如:
....<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>....
如果要在其它类中取得Bean对象,则可以先取得javax.faces.context.FacesContext,它代表了JSF目前的执行环境对象,接着尝试取得javax.faces.el.ValueBinding对象,从中取得指定的Bean对象,例如:
FacesContext context = FacesContext.getCurrentInstance();ValueBinding binding =context.getApplication().createValueBinding("#{user}");UserBean user = (UserBean) binding.getValue(context);
如果只是要尝试取得Bean的某个属性,则可以如下:
FacesContext context = FacesContext.getCurrentInstance();ValueBinding binding =context.getApplication().createValueBinding("#{user.name}");String name = (String) binding.getValue(context);
如果有必要在启始Bean时,自动设置属性的初始值,则可以如下设定:
....<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-property><property-name>name</property-name><value>caterpillar</value></managed-property><managed-property><property-name>password</property-name><value>123456</value></managed-property></managed-bean>....
如果要设定属性为 null 值,则可以使用<null-value/>标签,例如:
....<managed-property><property-name>name</property-name><null-value/></managed-property><managed-property><property-name>password</property-name><null-value/></managed-property>....
当然,您的属性不一定是字符串值,也许会是int、float、boolean等等类型,您可以设定<value> 值时指定这些值的字符串名称,JSF会尝试进行转换,例如设定为true时,会尝试使用Boolean.valueOf()方法转换为boolean的 true
您也可以将其它产生的Bean设定给另一个Bean的属性,例如:
....<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><managed-bean><managed-bean-name>other</managed-bean-name><managed-bean-class>onlyfun.caterpillar.OtherBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope><managed-property><property-name>user</property-name><value>#{user}</value></managed-property></managed-bean>....
在上面的设定中,在OtherBean中的user属性,接受一个UserBean类型的对象,我们设定为前一个名称为user的UserBean对象。
三、Beans上的List, Map
如果您的Bean上有接受List或Map类型的属性,则您也可以在配置文件中直接设定这些属性的值,一个例子如下:
....<managed-bean><managed-bean-name>someBean</managed-bean-name><managed-bean-class>onlyfun.caterpillar.SomeBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope><managed-property><property-name>someProperty</property-name><list-entries><value-class>java.lang.Integer</value-class><value>1</value><value>2</value><value>3</value></list-entries></managed-property></managed-bean>....
....<managed-bean><managed-bean-name>someBean</managed-bean-name><managed-bean-class>onlyfun.caterpillar.SomeBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope><managed-property><property-name>someProperty</property-name><map-entries><value-class>java.lang.Integer</value-class><map-entry><key>someKey1</key><value>100</value></map-entry><map-entry><key>someKey2</key><value>200</value></map-entry></map-entries></managed-property></managed-bean>....
- JSF入门八(Managed Beans)
- JSf Managed Beans (2)
- JSF---->Managed Beans
- JSF学习笔记四-Managed Beans
- JSF学习笔记之Managed Beans
- Configure Managed Beans in JSF 2.0
- Injecting Managed beans in JSF 2.0
- jsf、Spring、Hibernate 集成 faces-managed-beans.xml 配置
- Improving JSF Security Configuration With Secured Managed Beans
- Managed Beans
- Managed Beans
- Managed DirectX +C# 开发(入门篇)(八)
- Managed DirectX +C# 开发(入门篇)(八)
- (转)Managed DirectX +C# 开发(入门篇)(八)
- How to reference JSF managed beans which are provided in a JAR file?
- JSF Managed Bean
- JSF Gossip: Backing Beans
- JSF入门一(JSF简介)
- JSF入门四(简单的导航)
- JSF入门五(导航规则设置)
- JSF入门六(JSF Expression Language)
- JSF入门七(国际化信息)
- JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
- JSF入门八(Managed Beans)
- JSF入门九(标准转换器)
- JSF入门十(自定义转换器)
- JSF入门十一(标准验证器)
- 巴巴运动网商品交易系统的架构
- 巴巴运动网商品交易系统对分页的封装
- JSF入门十二(自定义验证器)
- JSF入门十三(错误信息处理)
- JSF入门十四(自定义转换, 验证标签)