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) {
    }

}

この場合、コンストラクターは 1 回呼び出されます。

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

結果は : createdcount=1 - それでOKです

しかし、タグ f:event を追加すると、ManagedBean のコンストラクターが複数回呼び出されます。

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

結果は次のとおりです。createdcount= 3 - なぜですか?

ありがとう。

4

0 に答える 0