2010-11-22 101 views
1

我目前正在学习JSF 2.0,我不知道如何在每次访问jsf页面时初始化CDI bean中的某些内容?JSF CDI Bean初始化每个页面访问

例如,在我的情况下,我有一个在一个JSF页面中使用的CDI bean。在bean内部的某处,我想查询并初始化某些内容,或者每次访问该页时检查授权(不是每次调用操作方法时)。

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

问候, 阿尔伯特锦

回答

2

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

每次访问页面时都会检查授权(并非每次调用操作方法时)。

对此,javax.servlet.Filter或很可能是javax.faces.event.PhaseListener是一个更好的解决方案。

+0

感谢您的提示! – bertie 2010-11-22 12:09:31

+0

不客气。 – BalusC 2010-11-22 12:09:50

0

如果我没有记错的话,调用构造函数每次页面加载时间 - 只要你申请你的bean的JSF页面,该对象的构造。因此,必须有一个没有任何参数的构造函数