每个页面访问的JSF CDI Bean初始化

时间:2010-11-22 08:38:25

标签: jsf jsf-2

我目前正在学习JSF 2.0,而且每次访问jsf页面时我都不知道如何在我的CDI bean中初始化某些东西?

例如,假设在我的情况下,我有一个在一个JSF页面中使用的CDI bean。在bean内部的某个地方,我想查询和初始化一些东西,或者每次访问页面时检查授权(不是每次调用action方法时)。

我可以将它放入bean的构造函数中,但是这并不能保证每次调用jsf页面都会调用构造函数吗?或者我应该在JSF页面上使用#{myBean.initialize()}调用吗?

此致 Albert Kam

3 个答案:

答案 0 :(得分:2)

如果您声明托管bean @RequestScoped,那么将为每个HTTP请求创建它(是的,这是“每次访问JSF页面时”,正如您在enduser的条款中所说的那样)。您可以在bean的构造函数或@PostConstruct方法中执行初始化作业。这与CDI无关。

  

每次访问页面时检查授权(不是每次调用操作方法时)。

为此,javax.servlet.Filter或非常javax.faces.event.PhaseListener是一个更好的解决方案。

答案 1 :(得分:1)

答案 2 :(得分:0)

如果我没有弄错,每次页面加载时都会调用构造函数 - 只要将bean应用到jsf页面,就会构造该对象。因此,必须有一个没有任何参数的构造函数