java - Weblogic 10.3.4 上的 @PostConstruct 注释未被调用

标签 java jsf annotations weblogic postconstruct

(这似乎与 https://stackoverflow.com/questions/5862085/weblogic10-3-ignores-postconsturt-method 重复,但细节很少,没有得到解答)。

我有一个像这样的 ManagedBean:

public class TestBean {
    private String greeting = "Hello, World!";

    public TestBean() {
    }

    public String getGreeting() {
      System.out.println( "getGreeting called, returning " + this.greeting );
      return greeting;
}

public void setGreeting( String message ) {
      this.greeting = message;
}


    @PostConstruct
    public void prepareSomething() {
        System.out.println( "\n\nPostConstruct called.\n\n" );
        this.greeting += " (PostConstruct was called)";
    }
}

在我的 xhtml 中,我只有 Bean Message: #{TestBean.greeting}。然而,当访问页面时,该方法没有被调用,我得到的是

Bean Message: Hello, World!

而不是预期的

Bean Message: Hello, World! (PostConstruct was called)

控制台确实显示来自 getGreeting() 方法的系统输出,但不显示来自 prepareSomething() 的系统输出:

INFO: Added Library from: zip:/data/java/wl1034/user_projects/domains/wlrep1034/autodeploy/PCTest.ear/PCTest.war/WEB-INF/lib/jsf-facelets.jar!/META-INF/jstl-fn.taglib.xml
getGreeting called, returning Hello, World!
2011-05-12 10:36:11,720 DEBUG org.richfaces.skin.SkinFactoryImpl - Create new Skin instance for name DEFAULT 

更多信息:我正在使用 JSF 1.2(使用 Weblogic 10.3.4 的 MW_HOME/common/deployable-libs/jsf-1.2.war!/WEB-INF/lib 中的 jar)、Facelets 1.1.14、RichFaces 3.3.2。我在 WEB-INF/lib 上有以下 jars:

commons-beanutils-1.7.0.jar
commons-digester-1.8.jar
commons-logging-1.1.1.jar
glassfish.jsf_1.0.0.0_1-2-15.jar
glassfish.jstl_1.2.0.1.jar
javax.jsf_1.1.0.0_1-2.jar
jsf-facelets.jar
log4j-1.2.16.jar
richfaces-api-3.3.2.SR1.jar
richfaces-impl-3.3.2.SR1.jar
richfaces-ui-3.3.2.SR1.jar
SimpleJSF.jar
wls.jsf.di.jar

我也尝试放置/删除annotations-api.jar,症状相同。

如果有必要,我可以发布其他文件。

最佳答案

我不使用 Weblogic,但如果我没记错的话,Weblogic 已经附带了它自己的 JSTL/JSF 库。因此您根本不需要自己提供它们。

但是如果我错了并且 Weblogic 没有附带它们,那么这些库看起来不太正确。这些到底是什么版本?

glassfish.jsf_1.0.0.0_1-2-15.jar
glassfish.jstl_1.2.0.1.jar
javax.jsf_1.1.0.0_1-2.jar

@PostConstruct 仅适用于 JSF 1.2 或更高版本。您可以下载JSF 1.2 here 。存在两个JAR文件

jsf-api.jar
jsf-impl.jar

您只需确保您的 faces-config.xml 声明符合 JSF 1.2 规范,并且 web.xml 声明至少Servlet 2.5 规范。

最后,JSTL 库应该是 this one .

关于java - Weblogic 10.3.4 上的 @PostConstruct 注释未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978577/

相关文章:

java - 在 Lombok 注释上使用验证和其他注释

java - 为整个应用设置屏幕方向

java - Spring AOP 方面破坏了上下文

java - 仅在 java 序列化时重命名字段

java - 我可以创建带注释的 Faces 应用程序监听器类吗?

jsf - primefaces blockui 不隐藏

java - 使用@JsonCreator 和@JsonProperty 未按预期生成 Json 响应

java - @Temporal(TemporalType.TIMESTAMP)

java - 什么时候正常的 init block 在 java 中执行

jsf - 如何以编程方式创建 <f :facet name ="header"> for HtmlPanelGrid