如果PageA和PageB与BeanA和BeanB链接,当我们从PageA遍历到PageB时,是否在渲染响应阶段调用BeanB的构造函数,即当渲染器呈现PageB标记时?
答案 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 {
....
参考文献: