2011-12-03 46 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数据。在视图范围内这是微不足道的,但如果没有它,那就相当棘手。