もし MVC (Model-View-Controller)アプローチを選択するならば、すなわち window(ビュー)内にハンドルコードを組み込まないことを選択するならば、 window を初期化するクラスを実装することが出来ます。 このクラスは org.zkoss.zk.ui.util.Composer インターフェースを実装しなければなりません。
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zul.Window;
public class MyComposer implements Composer {
public void doAfterCompose(Component comp) {
((Window)comp).setTitle("My Title"); //do whatever initialization you want
//comp is Window since we will specify it to a window later
}
}
ここでは三つのイベントリスナー、MyCreate, MyOK, と MyCancel が有るとします。イベントリスナーについてはイベントセクションを参照してください
Then, specify the class with the apply attribute as shown below.
<window apply="MyComposer"> ... </window>
window が org.zkoss.zul.Window のインスタンスとして作成され、それが doAfterCompose メソッドに comp 引数として渡されます。すると期待するような初期化が可能となります。
複数のコンポーザーが必要ならば、カンマで分けて適用できます。さらに、クラス、クラス名、コンポーザーのインスタンスやインスタンスのコレクションを返すとき、 EL 表現を使用できます。
<window apply="MyComposer, AnotherComposer">
<textbox apply="${c:mycomposer()}"/>
</window>