【问题标题】:@PostConstruct dont call in a session managed bean@PostConstruct 不调用会话托管 bean
【发布时间】:2011-12-23 18:36:24
【问题描述】:

就像我在标题中所说的那样,我在会话范围内的托管 bean 中有一个带有 @PostConstruct 标记的方法。但是该方法永远不会被调用。在视图范围内的另一个 bean 中,@PostConstruct 工作正常。 @Postconstruct 标签在会话 bean 中工作? 这基本上是我的问题。 再见,谢谢!

【问题讨论】:

  • 我认为 OP 是在谈论 abt JSF
  • 嗨,我正在使用 JSF 2.0 和 Richfaces 4
  • 您确定没有调用该方法吗?怎么样?
  • @PostConstruct public void init(){ System.out.println("PostConstruct - series"); } PostConstruct - 系列永远不会显示

标签: java jsf-2 scope richfaces managed-bean


【解决方案1】:

我也面临同样的问题。当我从会话中销毁 bean 时,问题得到解决(如果 bean 在会话范围内,它适用于请求范围)。 当 bean 在 session 范围内时,带有 @PostConstruct 注解的方法永远不会被调用两次,因为 bean 已经被实例化并存储在 session 中。

【讨论】:

    【解决方案2】:

    另外,构造函数永远不会被调用,但是 bean 工作得很好,除了 @postconstruct 方法和构造函数没有被调用

    要么您没有编译和部署带有更改的 bean 类,要么您有另一个具有相同名称但在不同包中的 bean 副本,而该包实际上被使用了。

    验证所有内容,清理所有内容并进行完整的重建/重新部署/重新启动。

    【讨论】:

      【解决方案3】:

      确保您的 bean 或 bean 的前身中的任何其他方法上都没有 @PostConstruct。 对于托管 bean,只允许一个 @PostConstruct

      【讨论】:

      • 也许您可以添加一个指向可以找到此信息的文档的链接
      • "这个注解只能注解bean类中的一个方法。如果用这个注解注解了多个方法,EJB将不会部署。" docs.oracle.com/cd/E11035_01/wls100/ejb30/…
      【解决方案4】:

      你如何引用会话 bean?可能 bean 还没有实例化,你在托管 bean 的构造函数中是否也有一些日志记录?

      【讨论】:

      • 对不起,我指的是bean的范围。
      • 另外,构造函数永远不会被调用,但是 bean 工作得很好,除了 @postconstruct 方法和构造函数没有被调用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2013-10-10
      • 2011-10-11
      • 2012-05-26
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      相关资源
      最近更新 更多