鍍金池/ 教程/ HTML/ JSF托管Bean
JSF數(shù)據(jù)表(h:dataTable)添加刪除
JSF <h:commandLink>標簽
JSF應(yīng)用程序入門示例
JSF數(shù)據(jù)表(ui:repeat)創(chuàng)建表
JSF列表框
JSF數(shù)據(jù)表(h:dataTable)DataModel排序數(shù)據(jù)
JSF復(fù)合組件
JSF <h:inputText>標簽
JSF表單組合框
JSF <h:messages>標簽
JSF <h:message>標簽
JSF轉(zhuǎn)換日期時間
JSF JDBC連接
JSF <h:inputHidden>標簽
JSF多選列表框
JSF <h:inputSecret>標簽
JSF自定義轉(zhuǎn)換器
JSF <f:ajax>標簽
JSF生命周期
JSF可重定位資源
JSFJSF用戶界面組件模型
JSF <h:attribute>標簽
JSF驗證器標簽
JSF驗證字符串長度
JSF轉(zhuǎn)換器標簽
JSF托管bean(Managed Bean)
JSF值變化的事件
JSF UI組件示例
JSF MySQL CURD實例
JSF數(shù)據(jù)表(h:dataTable)排序數(shù)據(jù)
JSF <h:graphicImage>標簽
JSF <f:convertNumber>標簽
JSF教程
JSF托管Bean
JSF輸出腳本
JSF <h:outputText>標簽
JSF操作事件
JSF驗證正則表達式
JSF數(shù)據(jù)表(h:dataTable)行號
JSF <h:setPropertyActionListener>標簽
JSF注入托管bean實例
JSF <h:commandButton>標簽
JSF Web資源
JSF <h:inputFile>標簽
JSF驗證浮點數(shù)值范圍
JSF Facelets視圖
JSF是什么?
JSF Facelets模板
JSF的特性(特點)
JSF自定義驗證器類
JSF單選按鈕
JSF輸出樣式
JSF數(shù)據(jù)表(h:dataTable)更新數(shù)據(jù)
JSF HTML5友好標記
JSF表單復(fù)選框(CheckBox)示例
JSF <h:form>標簽
JSF Facelets技術(shù)介紹
JSF輸出格式化
JSF <h:inputtextarea>標簽
JSF驗證整數(shù)范圍
JSF <h:panelGrid>標簽

JSF托管Bean

托管bean它是一個純Java類,它包含一組屬性和一組getter,setter方法。

以下是托管bean方法執(zhí)行的常見功能:

  • 驗證組件的數(shù)據(jù)
  • 處理組件觸發(fā)的事件
  • 執(zhí)行處理以確定應(yīng)用程序必須導航的下一頁
  • 它也可以作為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是比較舊方法。 在這種方法中,我們必須創(chuàng)建一個名為faces-config.xml的xml文件,JSF提供了配置bean的標簽。

在上面的例子中,我們列出了bean-name,bean-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在應(yīng)用程序配置資源文件中不需要托管bean配置項。

這是應(yīng)用程序配置資源文件方法的替代方法,并減少配置托管bean的任務(wù)。
@RequestScoped注釋用于提供托管的范圍。 您可以使用注解來定義bean將被存儲的范圍。

您可以對bean類使用以下范圍:

  • 應(yīng)用程序(@ApplicationScoped):應(yīng)用程序范圍在所有用戶中保持不變,與Web應(yīng)用程序的交互。
  • 會話(@SessionScoped):會話范圍在Web應(yīng)用程序中的多個HTTP請求中保持不變。
  • 視圖(@ViewScoped):在用戶與Web應(yīng)用程序的單個頁面(視圖)進行交互時,視圖范圍仍然存在。
  • 請求(@RequestScoped):在Web應(yīng)用程序中的單個HTTP請求期間,請求范圍仍然存在。
  • 無(@NoneScoped):表示未為應(yīng)用程序定義作用域。
  • 自定義(@CustomScoped):用戶定義的非標準作用域。 其值必須配置為java.util.Map,自定義范圍很少使用。

急切管理Bean

托管bean默認是懶惰的。 這意味著,只有在從應(yīng)用程序發(fā)出請求時才會去實例化bean。
如果想自動提前強制將bean實例化,那么可在應(yīng)用程序啟動時,可以強制將bean實例化并放置在應(yīng)用程序(@ApplicationScoped)范圍內(nèi)。您需要將托管 bean 的eager屬性設(shè)置為true,如以下示例所示:

@ManagedBean(eager=true)