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



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

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

有没有简单的方法可以做到这一点?

谢谢!

@PostConstruct替换为 <f:event type="preRenderView">

<f:event type="preRenderView" listener="#{sessionScopedBean.init}" />

然而,更好的做法是将其分成 2 颗豆子:一颗@SessionScoped豆和一颗@ViewScoped豆。然后只需在视图中引用@ViewScoped,并将@SessionScoped

注入作为@ViewScoped的属性。
@Named
@ViewScoped
public class ViewScopedBean {
    @Inject
    private SessionScopedBean sessionScopedBean;
    @PostConstruct
    public void init() {
        // ...
    }
    // ...
}

另请参阅:

  • 何时使用 f:viewAction/preRenderView 与 PostConstruct?
  • 如何选择合适的豆类范围?

相关内容

  • 没有找到相关文章

最新更新