Home   Single Page

apply 属性

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