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

JSF托管bean(Managed Bean)

JSF 托管bean(Managed Bean)是JSF注冊的常規(guī)Java Bean類。托管bean包含getter和setter方法,業(yè)務(wù)邏輯。JSF托管bean作為UI組件的Model。 它存儲JSF xhtml頁面使用的數(shù)據(jù)。借助JSF框架,可以從JSF頁面訪問托管Bean。
在JSF 1.2中,我們必須在JSF配置文件(如faces-config.xml)中注冊受管理的bean。
從JSF 2.0可以使用注解注冊管理bean。

使用XML配置

以下代碼顯示如何使用JSF管理的bean進(jìn)行注冊 -

<managed-bean>
  <managed-bean-name>helloWorld</managed-bean-name>
  <managed-bean-class>com.yiibai.test.HelloWorld</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean> 
<managed-bean>
  <managed-bean-name>message</managed-bean-name>
  <managed-bean-class>com.yiibai.test.Message</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

使用@ManagedBean注解

以下代碼顯示了如何使用注解來注冊JSF托管的bean。

@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {

   @ManagedProperty(value="#{message}")
   private Message message;
   ...
}

@ManagedBean將bean標(biāo)識為名稱屬性中指定的名稱的托管bean。如果未指定name屬性,那么托管bean名稱將默認(rèn)為簡單的類名稱,其中第一個(gè)字母小寫。 在我們的情況下是helloWorld。
如果eager設(shè)置為“true”,則在請求之前創(chuàng)建托管bean。如果使用“lazy”初始化,只有在請求時(shí)才會創(chuàng)建bean。

范圍注解

范圍注解設(shè)置受管Bean的范圍。如果未指定范圍,則bean將默認(rèn)為請求范圍。
我們可以將JSF bean范圍設(shè)置為以下列表。

  • @RequestScoped bean只要HTTP請求響應(yīng)就行。它根據(jù)HTTP請求創(chuàng)建,并在與HTTP請求相關(guān)聯(lián)的HTTP響應(yīng)完成時(shí)被銷毀。
  • @NoneScoped bean與單個(gè)表達(dá)式語言(EL)求值時(shí)間一樣長。 在EL求值評估時(shí)創(chuàng)建,并在EL求值評估后被銷毀。

  • @ViewScoped bean只要用戶在瀏覽器窗口中與同一JSF視圖進(jìn)行交互即可。 它根據(jù)HTTP請求創(chuàng)建,并在用戶導(dǎo)航到其他視圖時(shí)被銷毀。

  • @SessionScoped bean只要HTTP會話生存。 它在第一個(gè)HTTP請求時(shí)創(chuàng)建,并在HTTP會話無效時(shí)被銷毀。

  • @ApplicationScoped bean只要Web應(yīng)用程序生存。 它在第一個(gè)HTTP請求或Web應(yīng)用程序啟動(dòng)時(shí)創(chuàng)建,并且在@ManagedBean中設(shè)置屬性eager = true,并在Web應(yīng)用程序關(guān)閉時(shí)被銷毀。

  • @CustomScoped bean只要在為此范圍創(chuàng)建的自定義Map中的bean的條目生效。

@ManagedProperty注釋

JSF是一個(gè)簡單的靜態(tài)依賴注入(DI)框架。 @ManagedProperty注釋標(biāo)記被托管的bean的屬性以注入另一個(gè)受托管的Bean。