もし 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>