1

我正在用 ManagedBeans 编写项目,但我遇到了问题 - 构造函数的多次调用和 bean 的多个实例。测试bean的来源:

@Named(value = "newJSFManagedBean1")
@SessionScoped
public class NewJSFManagedBean1 implements Serializable {
    static private int createdcount = 0;

    public NewJSFManagedBean1() {
        createdcount++;
        System.out.println("Constructor.createdcount = " + createdcount);
    }

    public String getMessage() {
        return this.getClass().getName() + ".createdcount=" + createdcount;
    }

    public void preRenderBean(ComponentSystemEvent cse) {
    }

}

在这种情况下,构造函数调用了一次:

<h:body>
    <h:outputText value="#{newJSFManagedBean1.message}"/>
</h:body>

结果是: createdcount=1 - 没关系

但是,如果我添加标签 f:event ManagedBean 的构造函数被多次调用:

<h:body>
    <f:event listener="#{newJSFManagedBean1.preRenderBean}" type="preRenderComponent"/>
    <h:outputText value="#{newJSFManagedBean1.message}"/>
</h:body>

结果是: createdcount= 3 - 为什么?

谢谢。

4

0 回答 0