マクロコンポーネントの使用は他のコンポーネントと何も変わりません。
<window> <username/> </window>
普通のコンポーネントを使うように、マクロコンポーネントを使用するとき、プロパティ(aka,.属性)を指定できます。
<?component name="username" macroURI="/WEB-INF/macros/username.zul"?> <window> <username who="John"/> </window>
これらのプロパティはすべてマップ中に保存されます。そして、argと呼ばれる変数を通して、テンプレートに送られます。テンプレート中では以下のようにこれらのプロパティにアクセスできます。
<hbox> Username: <textbox value="${arg.who}"/> </hbox>
【メモ】:マクロページが読み込まれているときのみargは利用可能です。イベントリスナの中で通信するために、getDynamicPropertyを代わりに使用します。より詳しくは「メソッドを使う」セクションを参照ください。
指定したプロパティ(aka,.属性)に加えて、arg.includerと呼ばれるプロパティがマクロテンプレート中で定義されたコンポーネントの親要素を表すためにいつも渡されます。
標準マクロが作成されたとしたら、arg.includerはマクロコンポーネントそのものです。インラインマクロが作成されたら、arg.includerは親コンポーネントです。より詳しくはインラインマクロセクションを参照してください。
上の例ではarg.includerは標準マクロコンポーネント、<username who="John"/>を表します。またそれは<hbox>(username.zul中で定義された)の親要素です。 username.zul).