【问题标题】:Call session scoped bean method on every view在每个视图上调用会话范围的 bean 方法
【发布时间】:2015-01-07 22:11:15
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: jsf-2 view session-scope postconstruct


    【解决方案1】:

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

    另见:

    【讨论】:

    猜你喜欢
    • 2012-02-27
    • 2013-08-26
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多