也许这是一个我应该能够找到文档的问题,但是我不熟悉很多术语,所以我很难挣扎。
基本上,我使用的是JSF2。我有一个SessionScoped bean,它使用postconstruct init()方法。我希望每次会话启动时调用init()方法,这很好,但我也希望每次加载视图时都调用它。
有一种简单的方法吗?
谢谢!
答案 0 :(得分:2)
将@PostConstruct
替换为<f:event type="preRenderView">
。
<f:event type="preRenderView" listener="#{sessionScopedBean.init}" />
但最好是将其拆分为2个bean:@SessionScoped
个和@ViewScoped
个。然后,只需在视图中引用@ViewScoped
,然后将@SessionScoped
一个作为@ViewScoped
的属性注入。
@Named
@ViewScoped
public class ViewScopedBean {
@Inject
private SessionScopedBean sessionScopedBean;
@PostConstruct
public void init() {
// ...
}
// ...
}