JSF托管Bean

托管bean它是一个纯Java类,它包含一组属性和一组gettersetter方法。

以下是托管bean方法执行的常见功能:

  • 验证组件的数据
  • 处理组件触发的事件
  • 执行处理以确定应用程序必须导航的下一页
  • 它也可以作为JFS框架的模型。

JSF托管Bean示例

请看看下面一段示例代码 -

public class User {  
    private String name;  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }   
}

您可以通过以下方式使用此bean

  • 通过配置成XML文件。
  • 通过使用注释。

通过XML文件配置托管Bean

<managed-bean>  
    <managed-bean-name>user</managed-bean-name>  
    <managed-bean-class>User</managed-bean-class>  
    <managed-bean-scope>session</managed-bean-scope>  
</managed-bean>

在xml文件配置bean是比较旧方法。 在这种方法中,我们必须创建一个名为faces-config.xml的xml文件,JSF提供了配置bean的标签。

在上面的例子中,我们列出了bean-namebean-classbean-scope。 所以,它可以在项目中访问。

使用注释配置托管Bean

import javax.faces.bean.ManagedBean;  
import javax.faces.bean.RequestScoped;  

@ManagedBean    // Using ManagedBean annotation  
@RequestScoped  // Using Scope annotation  
public class User {  
    private String name;  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
         this.name = name;  
    }  
}

类中的@ManagedBean注解自动将该类注册为JavaServer Faces的资源。 这种注册的托管bean在应用程序配置资源文件中不需要托管bean配置项。

这是应用程序配置资源文件方法的替代方法,并减少配置托管bean的任务。
@RequestScoped注释用于提供托管的范围。 您可以使用注解来定义bean将被存储的范围。

您可以对bean类使用以下范围:

  • 应用程序(@ApplicationScoped):应用程序范围在所有用户中保持不变,与Web应用程序的交互。
  • 会话(@SessionScoped):会话范围在Web应用程序中的多个HTTP请求中保持不变。
  • 视图(@ViewScoped):在用户与Web应用程序的单个页面(视图)进行交互时,视图范围仍然存在。
  • 请求(@RequestScoped):在Web应用程序中的单个HTTP请求期间,请求范围仍然存在。
  • 无(@NoneScoped):表示未为应用程序定义作用域。
  • 自定义(@CustomScoped):用户定义的非标准作用域。 其值必须配置为java.util.Map,自定义范围很少使用。

急切管理Bean

托管bean默认是懒惰的。 这意味着,只有在从应用程序发出请求时才会去实例化bean。
如果想自动提前强制将bean实例化,那么可在应用程序启动时,可以强制将bean实例化并放置在应用程序(@ApplicationScoped)范围内。您需要将托管 bean 的eager属性设置为true,如以下示例所示:

@ManagedBean(eager=true)

上一篇:JSF生命周期

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

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

扫描二维码
程序员编程王

扫一扫关注最新编程教程