私はWicket newbです。これはちょうどWicketのライフサイクルの私の無知かもしれないので、私を教えてください!私の理解では、Wicket WebPageオブジェクトは一度インスタンス化されてからシリアル化されます。これは私のために混乱の点につながった、以下を参照してください。Wicket:コンポーネントを追加する場所は?コンストラクタ?または、事前レンダリング?
現在、私はサブクラス化するテンプレートクラスを持っています。私は、サブクラスでは、テンプレートの動作をオーバーライドする方法を示すWicketのドキュメントに例を踏襲:
protected void onBeforeRender() {
add(new Label("title", getTitle()));
super.onBeforeRender();
}
protected String getTitle() {
return "template";
}
サブクラス:
protected String getTitle() {
return "Home";
}
をこれは非常によく動作します。私にはっきりしないことは、このための "ベストプラクティス"です。ページのリクエストごとにonBeforeRender()が呼び出されたようですね。これは、すべてがonBeforeRender()にあれば、ページ上でかなり多くの処理が行われるようです。私は他のWicketの例に簡単に従って、コンストラクタにいくつかのコンポーネントを追加してオーバーライドしたくないかもしれませんが、コンポーネントロジックを2つの場所に分けました。
すべてのサブクラスに含める予定のコンポーネントを追加する場合は、コンストラクタまたはonBeforeRender()に追加する必要がありますか?
ありがとうございました。しかし、私は2つを混在させることはできません、テンプレートの動作をオーバーライドするための推奨される方法は何ですか?コンストラクタでオーバーライドされたメソッドを呼び出すことは悪い習慣です。 – gmallett
これは例外です:-) – Eelco