MB Annotations
JSF 2 託管 bean 註釋(@...Scoped 註釋只對 @ManagedBean 有效)
託管 bean 註釋 | 描述 | 屬性 |
---|
@ManagedBean
|
以託管 bean 的形式註冊一個類實例,然後將其放入到使用其中一個 @...Scoped
註釋指定的範圍內。如果沒有指定任何範圍,JSF 將把此 bean 放入請求範圍,如果沒有指定任何名稱,JSF
將把類名的第一個字母轉換為小寫,形成一個託管 bean 名稱;例如,如果類名為 UserBean ,那麼 JSF
將創建一個託管 bean,其名為 userBean 。eager 和 name
屬性都是可選的。 @ManagedBean(name = "count")
註釋必須結合使用一個實現零參數構造器的 Java 類。
|
eager ,name
|
@ManagedProperty
|
為託管 bean 設置一個屬性。註釋必須放在類成員變量的聲明之前。name
屬性指定特性的名稱,默認情況下為成員變量的名稱。value 屬性是特性的值,可以是一個字符串,也可以是一個 JSF
表達式,比如 #{...} 。
|
value ,name
|
@ApplicationScoped
| 在應用程序範圍RAM儲託管 bean。 |
|
@SessionScoped
| 在會話範圍RAM儲託管 bean。 |
|
@RequestScoped
| 在請求範圍RAM儲託管 bean。 |
|
@ViewScoped
| 在視圖範圍RAM儲託管 bean。http://technology-related.com/javaee/6/docs/api/javax/faces/bean/ViewScoped.html
|
|
@NoneScoped
| 將託管 bean 指定為沒有範圍。無範圍的託管 bean 在被其他 bean 引用時比較有用。 |
|
@CustomScoped
|
在定製範圍RAM儲託管 bean。
定製範圍就是指可以由頁面創建者訪問的地圖。可以通過編程的方式控制定製範圍內的 bean 的可視性和生命週期。value
屬性指向一個地圖。
|
value |
@ViewScoped
有時候我們需要 MBean 的範圍比 request 長、但比 session 短的作用範圍,那就是所謂的View Scope(page scope)。view scope允許你在page範圍內進行數據操作,而不是每次發送request都需要創建一個Mbean。
使用 <a4j:include> 和 <a4j:keepAlive> 可以使用 <a4j:include> 在父 View 中包含子 View ,而子 View 仍然可以像正常 JSF 一樣,按照導航規則導航。通常用來做嚮導之類的頁面。
keepAlive[/u] 可以保持 request scope bean 在ajax交互中存活(alive) , 這是在 Ajax4jsf JAQ:http://wiki.java.net/bin/view/Projects/Ajax4jsf中提到的resin一個問題的簡單解決辦法 .現在你可以說 :他將被保存和從新獲得在ajax request/response series中
a4j:keepAlive 該標籤通過EL表達式(#{'+name+'})得到bean, 並且保存該bean到組件樹中. 在恢復組件樹中,bean被放到request-scope中
我把後台bean的範圍從session改為request之後,發現按鈕失效,細想之後覺得原因是由點擊按鈕導致後台bean重新實例化使數據不能保存,但讓後台bean保持session的效果的話,頁面不太安全,所以用keepAlive組件可以使特定的數據得以保存。
|