
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
一个典型的JavaServer Faces应用程序包括一个或多个托管的bean,每个托管bean都可以与特定页面中使用的组件相关联。本节介绍在应用程序中创建,配置和使用托管bean的基本概念。
创建一个托管Bean
托管bean是使用不带参数的构造函数创建的,一组属性以及一组用于执行组件功能的方法。每个托管bean属性都可以绑定到以下之一:
一个组件的值
一个组件实例
一个转换器实例
一个监听器实例
验证程序实例
托管bean方法执行的最常用功能包括:
验证组件的数据
处理组件触发的事件
执行处理以确定应用程序必须导航的下一页
和所有JavaBeans组件一样,一个属性由一个私有数据字段和一组访问方法组成
绑定到组件的值时,bean属性可以是基本的基本类型和数字类型,或者应用程序可以访问相应转换器的任何Java对象类型。例如,如果应用程序可以访问可以将Date类型转换为String并返回的转换器,那么属性可以是java.util.Date类型。有关 哪些组件标签可以接受的信息,请参阅Bean属性。
当bean属性绑定到组件实例时,属性的类型必须与组件对象相同。例如,如果将一个 javax.faces.component.UISelectBoolean组件绑定到该属性,则该属性必须接受并返回一个UISelectBoolean对象。同样,如果该属性绑定到转换器,验证器或侦听器实例,则该属性必须是适当的转换器,验证器或侦听器类型。
有关编写Bean及其属性的更多信息,请参阅编写Bean属性。
使用EL引用托管豆
要将组件值和对象绑定到托管bean属性或从组件标签引用托管bean方法,页面作者使用表达式语言语法。正如EL概述中所解释的那样,以下是EL提供的一些功能:
表达式的延迟评估
能够使用值表达式读取和写入数据
方法表达式
表达式的延迟评估非常重要,因为JavaServer Faces生命周期分为几个阶段,其中组件事件处理,数据转换和验证以及到外部对象的数据传播都按顺序执行。实现必须能够延迟对表达式的评估,直到达到生命周期的适当阶段。因此,实现的标签属性总是使用延迟评估语法,用#{}分隔符进行区分。
为了将数据存储在外部对象中,几乎所有的JavaServer Faces标签属性都使用左值表达式,这些表达式允许在外部对象上获取和设置数据。
最后,一些组件标签属性接受引用处理组件事件或验证或转换组件数据的方法的方法表达式。