托管bean它是一個(gè)純Java類,它包含一組屬性和一組getter,setter方法。
以下是托管bean方法執(zhí)行的常見功能:
JSF托管Bean示例
請(qǐng)看看下面一段示例代碼 -
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是比較舊方法。 在這種方法中,我們必須創(chuàng)建一個(gè)名為faces-config.xml的xml文件,JSF提供了配置bean的標(biāo)簽。
在上面的例子中,我們列出了bean-name,bean-class和bean-scope。 所以,它可以在項(xiàng)目中訪問。
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注解自動(dòng)將該類注冊(cè)為JavaServer Faces的資源。 這種注冊(cè)的托管bean在應(yīng)用程序配置資源文件中不需要托管bean配置項(xiàng)。
這是應(yīng)用程序配置資源文件方法的替代方法,并減少配置托管bean的任務(wù)。@RequestScoped注釋用于提供托管的范圍。 您可以使用注解來定義bean將被存儲(chǔ)的范圍。
您可以對(duì)bean類使用以下范圍:
java.util.Map,自定義范圍很少使用。托管bean默認(rèn)是懶惰的。 這意味著,只有在從應(yīng)用程序發(fā)出請(qǐng)求時(shí)才會(huì)去實(shí)例化bean。
如果想自動(dòng)提前強(qiáng)制將bean實(shí)例化,那么可在應(yīng)用程序啟動(dòng)時(shí),可以強(qiáng)制將bean實(shí)例化并放置在應(yīng)用程序(@ApplicationScoped)范圍內(nèi)。您需要將托管 bean 的eager屬性設(shè)置為true,如以下示例所示:
@ManagedBean(eager=true)