【问题标题】:Initialize JSF (ICEfaces) backing-bean only when page loads仅在页面加载时初始化 JSF (ICEfaces) backing-bean
【发布时间】:2012-01-22 00:45:42
【问题描述】:

我不知道如何仅在页面加载时初始化支持 bean,我使用的是 Spring 和 ICEfaces。

为了声明 ICEfaces 的支持 bean,我在 faces.config.xml 中使用 Spring 注释 @Controller 和 el-resolver,因为我需要在支持 bean 中注入服务对象,而 @ManagedBean 不起作用。

我使用@PostConstructor,但在应用程序启动时创建支持bean 时调用它。我想在页面加载时初始化我的支持 bean,而不是在创建支持 bean 时。

对我不起作用,因为每次进行部分提交时都会调用它,而我只需要初始化一次

在此先感谢,对不起我的英语

【问题讨论】:

    标签: spring jsf icefaces


    【解决方案1】:

    我怀疑@Controller 具有“单例”的默认范围,因此在应用程序启动期间被初始化。如果您想在第一次引用 bean 时初始化 bean 并留在会话中,您应该申请 @Scope("session")@PostConstruct 也会在适当的时候被调用一次。

    【讨论】:

    • 谢谢,我申请了@Scope("request") 并且它可以工作,但是@PostConstruct 注释的方法在部分提交(ajax 调用)中执行。当页面加载不在 ajax 调用中时,我只想要一次执行。
    • @AlexCuervo 如果你想用 spring 而不是 JSF 来管理你的 bean,你可以尝试像 cagataycivici.wordpress.com/2010/02/17/… 这样的东西并将视图范围应用到它们——不过仅在 JSF2 中可用。
    • 谢谢!!!!它完美地工作!我希望 Spring 在未来的版本中引入这个范围!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多