在每个视图上调用会话范围的bean方法

时间:2015-01-07 22:11:16

标签: jsf-2 view session-scope postconstruct

也许这是一个我应该能够找到文档的问题,但是我不熟悉很多术语,所以我很难挣扎。

基本上,我使用的是JSF2。我有一个SessionScoped bean,它使用postconstruct init()方法。我希望每次会话启动时调用init()方法,这很好,但我也希望每次加载视图时都调用它。

有一种简单的方法吗?

谢谢!

1 个答案:

答案 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() {
        // ...
    }

    // ...
}

另见: