什么时候在JSF中实例化bean?

时间:2014-01-09 12:39:02

标签: jsf-2

如果PageA和PageB与BeanA和BeanB链接,当我们从PageA遍历到PageB时,是否在渲染响应阶段调用BeanB的构造函数,即当渲染器呈现PageB标记时?

1 个答案:

答案 0 :(得分:0)

希望下面的描述可以帮助您理解行为

范围注释设置托管bean的放置范围。如果未指定scope,那么bean将默认为请求范围。下面简要讨论每个范围

范围说明

@RequestScoped
只要HTTP请求响应存在,Bean就会存在。它在HTTP请求时创建,并在与HTTP请求关联的HTTP响应完成时被销毁。

@NoneScoped

只要进行一次EL评估,Bean就会存在。它是在EL评估时创建的,并在EL评估后立即销毁。

@ViewScoped

只要用户在浏览器窗口/选项卡中与相同的JSF视图进行交互,Bean就会存在。它是在HTTP请求时创建的,一旦用户回发到另一个视图就会被销毁。

@SessionScoped
只要HTTP会话存在,Bean就会存在。它是在会话中涉及此bean的第一个HTTP请求时创建的,并在HTTP会话失效时被销毁。

@ApplicationScoped
只要Web应用程序存在,Bean就会存在。它是在应用程序中涉及此bean的第一个HTTP请求时创建的(或者当Web应用程序启动并且@ManagedBean中设置了eager = true属性时),并在Web应用程序关闭时被销毁。

@CustomScoped
只要在为此范围创建的自定义Map中的bean条目存在,Bean就会存在。

另一个重要的属性是渴望。如果eager =“true”,则在第一次请求之前创建托管bean,否则将使用默认的“延迟”初始化,只有在请求时才会创建bean。

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

 ....

参考文献:

http://docs.oracle.com/javaee/6/tutorial/doc/girch.html

http://www.tutorialspoint.com/jsf/jsf_managed_beans.htm