次の簡単なテスト ケースが与えられます。
<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 を使用しています。