2011-12-03 68 views
9

如何使用/使用在JSF 2.0在JSF 2.0中使用@ViewScoped?

+3

另請參見[@ ViewScoped'的補丁和陷阱](http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html)和[JSF 2.0中的通信]( http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html)。 – BalusC

回答

38

@ManagedBean @ViewScoped的@ManagedBean以下優點只是聲明瞭某個bean被JSF管理(使其可用於在其他表達式語言)。

@ViewScoped允許你聲明一個特定的作用域。默認情況下(當你不指定任何作用域時)是@RequestScoped,這意味着你的bean將通過一個請求生存並被銷燬。其他示波器是@SessionScoped@ApplicationScoped。第三方擴展已經引入了其他範圍。

@ViewScoped只要您將頁面回傳給自己,它就會一直存在。 '視圖'是Java EE中'頁面'的另一個詞,但頁面範圍在Java EE中已經意味着其他一些東西。視圖範圍非常方便,因爲它允許在首次訪問頁面時(通過非面部請求(通常是GET請求))初始化數據的模式,然後在頁面上工作時保留該數據,執行回傳,AJAX請求等。

在與表中的組件進行交互的JSF中使用表時,該作用域是一個救生員。也就是說,在JSF中有一條規則,即用於呈現表的數據必須是在處理與之交互的組件時在回發後使用的EXACT SAME數據。在視圖範圍內這是微不足道的,但如果沒有它,那就相當棘手。