我正在用 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 - 为什么?
谢谢。