托管bean它是一个纯Java类,它包含一组属性和一组getter
,setter
方法。
以下是托管bean方法执行的常见功能:
JSF托管Bean示例
请看看下面一段示例代码 -
public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
您可以通过以下方式使用此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
。 所以,它可以在项目中访问。
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类使用以下范围:
java.util.Map
,自定义范围很少使用。托管bean
默认是懒惰的。 这意味着,只有在从应用程序发出请求时才会去实例化bean。
如果想自动提前强制将bean
实例化,那么可在应用程序启动时,可以强制将bean
实例化并放置在应用程序(@ApplicationScoped
)范围内。您需要将托管 bean 的eager
属性设置为true
,如以下示例所示:
@ManagedBean(eager=true)