JSF托管bean(Managed Bean)

JSF 托管bean(Managed Bean)是JSF注册的常规Java Bean类。托管bean包含getter和setter方法,业务逻辑。JSF托管bean作为UI组件的Model。 它存储JSF xhtml页面使用的数据。借助JSF框架,可以从JSF页面访问托管Bean。
在JSF 1.2中,我们必须在JSF配置文件(如faces-config.xml)中注册受管理的bean。
从JSF 2.0可以使用注解注册管理bean。

使用XML配置

以下代码显示如何使用JSF管理的bean进行注册 -

<managed-bean>
  <managed-bean-name>helloWorld</managed-bean-name>
  <managed-bean-class>com.zyiz.test.HelloWorld</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean> 
<managed-bean>
  <managed-bean-name>message</managed-bean-name>
  <managed-bean-class>com.zyiz.test.Message</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

使用@ManagedBean注解

以下代码显示了如何使用注解来注册JSF托管的bean。

@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {

   @ManagedProperty(value="#{message}")
   private Message message;
   ...
}

@ManagedBean将bean标识为名称属性中指定的名称的托管bean。如果未指定name属性,那么托管bean名称将默认为简单的类名称,其中第一个字母小写。 在我们的情况下是helloWorld
如果eager设置为“true”,则在请求之前创建托管bean。如果使用“lazy”初始化,只有在请求时才会创建bean。

范围注解

范围注解设置受管Bean的范围。如果未指定范围,则bean将默认为请求范围。
我们可以将JSF bean范围设置为以下列表。

  • @RequestScoped bean只要HTTP请求响应就行。它根据HTTP请求创建,并在与HTTP请求相关联的HTTP响应完成时被销毁。
  • @NoneScoped bean与单个表达式语言(EL)求值时间一样长。 在EL求值评估时创建,并在EL求值评估后被销毁。

  • @ViewScoped bean只要用户在浏览器窗口中与同一JSF视图进行交互即可。 它根据HTTP请求创建,并在用户导航到其他视图时被销毁。

  • @SessionScoped bean只要HTTP会话生存。 它在第一个HTTP请求时创建,并在HTTP会话无效时被销毁。

  • @ApplicationScoped bean只要Web应用程序生存。 它在第一个HTTP请求或Web应用程序启动时创建,并且在@ManagedBean中设置属性eager = true,并在Web应用程序关闭时被销毁。

  • @CustomScoped bean只要在为此范围创建的自定义Map中的bean的条目生效。

@ManagedProperty注释

JSF是一个简单的静态依赖注入(DI)框架。 @ManagedProperty注释标记被托管的bean的属性以注入另一个受托管的Bean。


上一篇:JSF应用程序入门示例

下一篇:JSF注入托管bean实例

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程