Managed Bean (Backing Bean) 受管(託管) Bean 是一個 POJO(Plain Old Java Object,簡單的傳統 Java 物件),可用於存儲資料,並由容器(例如,GlassFish 服務器)使用 JSF 框架來管理。
特點
JSR 299 CDIhttp://www.cn-java.com/www1/?action-viewnews-itemid-55539 Weld並不需要完整的應用服務器。它可以運行在Servlet容器內如Jetty 6.1或是Tomcat 6,同時也能用於Java SE 5.0+。新的Managed Bean規範是JSR-299的工作成果(在規範的早期草案中我們稱之為「簡單Web Bean」)。簡單Web Bean支持依賴注入、EL名字與攔截器,但卻沒有EJB那些編程約束。 最後的結果是:CDI可以用在普通的Java類(現在叫做「Managed Bean」)以及EJB上。現在的EJB可以看作是一種特殊的Managed Bean,只不過有一些額外的編程約束和功能。這種編程模型能夠極大地降低新用戶學習EE的曲線。 我認為EE平台的未來發展方向是逐漸將EJB特有的功能通用化,將其應用在所有的Managed Bean上。舉個例子,為何不是所有的Managed Bean都支持@TransactionAttribute和@RolesAllowed呢?簡直沒有道理嘛。 然而EJB在為消息傳輸定義端點、遠程與異步方法調用、定時器等領域還是有一席之地的。在這些情況下,EJB生命週期模型還是非常有意義的。 CDI來源於Red Hat的開源Seam框架,從廣義上來講,它將Seam的編程模型標準化為Java EE 6的編程模型。CDI實現了Java EE 6的3個主要目的。首先,它提供了聲明的方式來管理綁定到上下文組件的範圍、狀態與生命週期。其次,它為平台提供了標準化、註解驅動、類型安全的依賴注入框架,方式類似於Google Guice。最後,它為Java EE平台的擴展開發提供了Service Provider Interface(SPI)。 編寫(2者可選)
按照約定,託管 bean 的名稱與類名相同,類名的第一個字母被轉換為小寫。也可以使用 ManagedBean 註釋的 name 屬性顯式地指定一個託管 bean,比如:@ManagedBean(name = "place")。 從 faces-config.xml 中移除託管 bean 聲明將極大地減少 XML,但是在 JSF 2 中,通過使用註釋(如我對託管 bean 所做的一樣)或是約定(比如 JSF 2 的簡化的導航處理),幾乎可以去掉所有的 XML 內容。
IDE ToolsManaged Bean 生命週期Default: request Setter / Getterxhtml file: <h:commandBotton value="Submit" action="#{wisdomFish.name}" /> <h:outputText value="#{wisdomFish.name}" /> |