jsf-2 - 在每个 View 上调用 session 作用域 bean 方法

标签 jsf-2 view session-scope postconstruct

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

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

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

谢谢!

最佳答案

替换@PostConstruct通过<f:event type="preRenderView"> .

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

但是,更好的方法是将其分成 2 个 bean:a @SessionScoped一又一个@ViewScoped一。然后只需引用 @ViewScoped相反,在 View 中插入一个并注入(inject) @SessionScoped一个作为 @ViewScoped 的属性一个。

@Named
@ViewScoped
public class ViewScopedBean {

    @Inject
    private SessionScopedBean sessionScopedBean;

    @PostConstruct
    public void init() {
        // ...
    }

    // ...
}

另请参阅:

关于jsf-2 - 在每个 View 上调用 session 作用域 bean 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829550/

相关文章:

jsf-2 - 如何在 HTML 上显示 javascript 值

android - 在抽屉列表项之间添加分隔符

Drupal 7 在 View 中获取分类术语列表

nhibernate - 为什么 NHibernate 延迟加载绑定(bind)到 session ?

java - 错误的 ApplicationContext 中 session 范围的 bean 泄漏

ajax - f :ajax listener method in h:selectOneMenu is not executed

jsf-2 - JSF1027 : [null] The ELResolvers for JSF were not registered with the JSP container

jsf - PrimeFaces:有没有办法在 <p:message> 中放置超链接

ajax - 过滤时,如何发布 SearchModel,但在 View 中获取不同的 ResultsModel

java - session 范围 bean - 如何处理多用户数据