fulfill="event-expr"fulfill="event-expr1, event-expr2, event-expr3"fulfill="event-expr=uri-expr"fulfill="event-expr1, event-expr2=uri-expr2"fulfill="=uri_expr"
ここで event-expr 、 event-expr1 その他はイベント表記と呼ばれます。イベント表記は特定のコンポーネントをターゲットとしてイベントを識別するために使用されます。これは以下のフォーマットのうちの1つです。
event-nametarget-id.event-nameid1/id2/id3.event-name${el-expr}.event-name
そして uri-expr は URI かURI を返す EL 表記です。例えば、
/my/super.zul${my_super_zul}
これは子要素を作成するタイミングを指定します。デフォルトによって、(つまり、fullfillは指定されていない場合)子要素はZUMLページが読み込まれた直後、親コンポーネントが作成された直後に作成されます。
fullfill属性で状態を指定すれば、子要素の作成を遅らせます。その条件はイベント名と、目標コンポーネント識別子(オプション)又はパス(オプション)から成り立っています。つまり、指定された目標コンポーネントがイベントを受け取るまでに、子要素 は処理されません。識別子が指定されていない場合、同じコンポーネントが想定されます。
EL表記が指定されている場合、コンポーネント、識別子またはパスを送り返さなければなりません。
詳しくはロードオンデマンドセクションをご覧ください。
URI 表記が指定されると、 ZK ローダーは URI に指示されている通りにコンポーネントを作成し、それを子供のコンポーネントとしてアサインします。 URI に指示されている通りにコンポーネントを作成するということは、実際に Executions 内のcreateComponents メソッドを起動します。例えば、以下の例では ZK ローダーは b ボタンがクリックされると Executions.createComponents("/my/super.zul", d, null) を起動して d div の子供コンポーネントを作成します。
<button id="b" label="open"/> <div id="d" fulfill="b.onClick=/my/super.zul"> </div>
イベント表記が指定されていないと、 ZK ローダーは全てのプロパーティがアサインされて、子供コンポーネントが作成された直後にコンポーネントを作成します。以下の例では、 ZK ローダーは最初に combobox を作成して /my/super.zul ないの定義にあるコンポーネントを作成します。
<div fulfill="=/my/super.zul"> <combobox/> </div>
ZK ローダーが fulfill 条件を適用後、すなわち全ての後続のコンポーネントが作成された後、
org.zkoss.zk.ui.event.FulfillEvent のインスタンスである、onFulfill イベントを起動して、もしあれば次のプロセスのためにコンポーネントに通知します。
例えば、 org.zkoss.zk.ui.Components クラスの wireVariables
メソッドを使用するならば、再び onFulfill イベント内で
wireVariables を呼んで、新しいコンポーネントと紐付けする必要があるでしょう。
<div fulfill="b1.onClick, b2.onOpen" onFulfill="Components.wireVariables(self, controller)">
...
</div>