1

次の簡単なテスト ケースが与えられます。

<h:form id="form" prependId="true">
    <p:commandButton value="Submit" actionListener="#{testManagedBean.action}"/>
    <p:commandLink value="Submit" actionListener="#{testManagedBean.action}"/>
</h:form>

関連する JSF マネージド Bean:

@ManagedBean
@ViewScoped
public final class TestManagedBean implements Serializable
{
    private static final long serialVersionUID = 1L;

    @PostConstruct
    private void init() {
        System.out.println("init() called");
        // May invoke expensive business services like EJB calls.
    }

    public void action() {
        System.out.println("action() called.");
    }
}

または指定された が押されると<p:commandButton>、アクションリスナーに加えてメソッドが呼び出されます - 。<p:commandLink>init()action()

init()メソッドには、すべての AJAX 要求で不必要に呼び出されるべきではない高価なビジネス サービスが含まれている可能性があるため、これは発生しないはずです。

この動作を防ぐ方法はありますか? このinit()メソッドは、AJAX 呼び出しで呼び出されるべきではありません。

JSF 2.2.6 と PrimeFaces 5.0 final を使用しています。

4

1 に答える 1

-1

import javax.faces.bean.ViewScoped;マネージド Bean が CDI アーティファクトでない場合に使用します。

于 2016-11-24T09:46:57.857 に答える