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)