`
whoosh
  • 浏览: 235534 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JSF入门八(Managed Beans)

    博客分类:
  • JSF
 
阅读更多

本文参考

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入门级教程

    JSF入门级教程 JSF(JavaServer Faces)是一种基于JavaEE的Web应用...JSF入门级教程提供了一个详细的JSF Framework概述,包括JSF的特点、组件模型、导航机制、国际化机制、Managed Beans、数据转换与验证等知识点。

    jsf实现登录功能

    `@ManagedBean`注解标识这个类是一个JSF Managed Bean,`@SessionScoped`表示这个Bean的实例将在整个会话期间保持活跃。`login()`方法是当用户点击登录按钮时调用的,其中`validateCredentials()`是验证用户名和密码...

    JSF入门+JSF web实战+JSF2

    此外,还会讲解EL(Expression Language)和 Managed Beans,这两个是JSF中用于数据绑定和业务逻辑处理的关键技术。 《JSF Web应用实战开发》则深入到实际开发中,提供了许多实战案例,让读者了解如何在实际项目中...

    清晰版--JSF入门.pdf

    ### JSF入门知识点详解 #### 一、JSF概述 **1.1 简介JSF** JavaServer Faces (JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的复杂性,...

    JSF入门必读——JSF入门基础

    Backing Beans是与JSF页面关联的Managed Beans,通常用于接收、处理和验证用户输入。Managed Beans可以通过@ManagedBean和@ViewScoped等注解进行配置和范围划分。 6. 数据转换和验证 - 标准转换器:JSF提供了一些...

    值得看的jsf入门教程

    通过本教程的学习,你将理解JSF的基本原理,学会创建简单的JSF应用,并能够使用Facelets、Managed Beans和EL表达式来构建视图和处理逻辑。随着技能的提升,你还可以探索更高级的主题,如自定义组件、依赖注入和CDI...

    JSF入门PDF书籍

    ### JSF入门知识点详解 #### 一、JSF概述与入门 **1.1 JSF简介** - **背景与挑战**: - Web应用程序开发相较于传统单机程序开发,在技术层面上面临着诸多挑战,比如HTTP协议的状态无感知特性、多用户并发访问带来...

    JSF入门与标签_JSF入门与标签.

    3. **Managed Beans**: Managed Beans是JSF中的业务逻辑对象,用于处理数据和业务逻辑。 4. **Lifecycle**: JSF有七个阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用、渲染响应和结束请求。每个...

    JSF入门

    通过这个入门指南,你可以学习到JSF的基础知识,包括如何创建简单的JSF应用程序、理解和使用JSF组件、配置和管理Managed Beans,以及掌握JSF生命周期和Ajax支持。继续深入研究,你将能够利用JSF构建高效、可维护的...

    《JSF入门》简体中文版.pdf

    JSF中的Managed Beans是指与JSF生命周期管理相结合的JavaBeans。它们可以作为backing beans,用于保存用户界面组件的状态和逻辑。Managed Beans的配置与设定在JSF中是关键,因为它们提供了一种方式来保存和访问用户...

    JSF入门实例 源代码

    JSF的页面(View)通常由JSF组件(如输入字段、按钮等)组成,这些组件映射到后台的Managed Beans(Model),并由Faces Servlet(Controller)协调工作。 3. Managed Beans: Managed Beans是JSF中的核心组件,...

    JSF入门教程JSF入门教程

    ManagedBeans是JSF应用中的核心组件,它们充当了模型的角色,负责存储数据和执行业务逻辑。JSF提供了多种类型的ManagedBeans,包括: - **Backing Beans**:与特定的JSF页面关联,存储页面的数据并处理页面上的事件...

    JSF 资源 managed bean 课件

    ### JSF Managed Beans知识点概述 #### 一、JSF与Managed Beans的概念 - **JSF (JavaServer Faces)**:一种用于构建企业级Web应用程序的标准Java技术。它提供了一种简化的方式来构建用户界面,并且能够更好地处理...

    JSF入门资料.pdf

    Managed Beans是JSF应用中的核心组件,它们充当业务逻辑的容器。开发者可以通过注解或XML配置文件定义Managed Beans,然后在视图层中通过EL(Expression Language)表达式来调用Bean的方法。Beans可以有属性、构造...

    java JSF入门

    Managed Beans 是JSF中的核心组件,它们作为业务逻辑和视图之间的桥梁,负责处理数据和控制流程。 #### 2.1 Backing Beans Backing Beans 是与JSF页面绑定的Java类,它们可以包含业务逻辑、数据模型以及方法,这些...

    《JSF入门》培训教程PPT

    Java Contexts and Dependency Injection (CDI) 是Java EE中的一种依赖注入框架,JSF可以与其无缝集成,使得管理Managed Beans和服务更加灵活和强大。 八、JSF应用实例 一个典型的JSF应用可能包括登录页面、用户...

    jsf入门+标签

    - 《jsf入门》简体中文版1.pdf:这本书可能涵盖了JSF的基础知识,包括环境配置、组件模型、生命周期、Managed Beans的使用等。 - 《jsf标签》简体中文版2.pdf:这本书可能深入讲解了JSF的内置标签及其用法,以及如何...

Global site tag (gtag.js) - Google Analytics