【问题标题】:MyFaces - @PostConstruct on abstract classMyFaces - 抽象类上的@PostConstruct
【发布时间】:2012-02-27 21:32:43
【问题描述】:

我正在尝试执行抽象类中的 PostConstruct 注释方法,

    public abstract class AbstractTest {

            @PostConstruct
            public void init() {

            }
    }

    @ManagedBean
    @SessionScoped
    public Test extends AbstractTest {

    }

但是当 Test 被创建时 init 方法没有被调用,是 bug 吗?不支持的功能?代码不正确?

在 Mojarra 2.1.6 上可以正常工作

MyFaces 2.1.6、Glassfish 3.1.2-b23

【问题讨论】:

    标签: java jsf-2 myfaces postconstruct


    【解决方案1】:

    Java EE section 5.2.3

    资源注释可能出现在上面列出的任何类上,或者 在上面列出的任何类的任何超类上。上的资源注释 继承层次结构中的任何类都定义了所需的资源 应用程序组件。

    对我来说听起来像是一个错误!显然 Mojarra 曾在某个时间点遇到过同样的错误并已修复:issue 800

    【讨论】:

    • 我创建了问题MYFACES-3483,但它被标记为无效:“这是一个老问题。PostConstruct 和 PreDestroy 注释只扫描测试类上声明的方法,而不是继承的方法。MyFaces 不能做任何事情,因为这是容器的责任。我将关闭这个问题作为无效。“
    • 很奇怪。如果确实是容器的责任,您使用的是什么容器和版本?
    • 我使用的是 Glassfish 3.1.2-b23,但是当我使用 Mojarra 2.1.6(与 glassfish 捆绑)时它可以工作,所以也许这个 Mojarra 几乎没有修改..
    • 那么,如果您使用 glassfish,为什么还要使用 myfaces?只是好奇
    • gotacha...了解 PrimeFaces,他将在修复任何错误之前实现 50 个新组件
    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    相关资源
    最近更新 更多