托管bean它是一个纯Java类,它包含一组属性和一组getter
,setter
方法。
以下是托管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-name
,bean-class
和bean-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)