Home   Single Page

インラインマクロ

二種類のマクロコンポーネントがあります。インライン[57]とレギュラー(標準)です。デフォルトでは、レギュラーマクロスが想定されています。インラインマクロスを指定するのに、コンポーネントコマンド中でinline=”true”を指定しなければなりません。

インラインマクロはinline-expansionのように作動します。インラインマクロが指定されると、ZKはマクロコンポーネントを作成しません。その代わり、マクロURIの中で定義されたコンポーネントをインライン拡張します。つまり、インラインマクロのコンテンツを直接目標ページに入力するのと同様です。

use.zul: (target page)

<?component name="username" inline="true" macroURI="username.zul"?>
<grid>
    <rows>    
        <username id="ua" name="John"/>        
    </rows>    
</grid>

username.zul: (macro definition)

<row>
    Username    
    <textbox id="${arg.id}" value="${arg.name}"/>    
</row>

Equivalent page:

<grid>
    <rows>    
<row>
    Username    
    <textbox id="ua" value="John"/>    
</row>
    </rows>    
</grid>

id を含む全てのプロパティがインラインマクロに渡されます。

一方で、ZKは(マクロコンポーネントと呼ばれる)本当のコンポーネントを作成しレギュラーマクロを表します。つまり、マクロの中で定義されたコンポーネントの親としてマクロコンポーネントは作成されます。

複雑なページではレギュラーより、インラインマクロを使うほうが簡単です。例えば、前の例では、rowsはマクロコンポーネントではなくて、列のみを受け取るので、レギュラーコンポーネントを使うことはできません。インラインマクロでは、すべてのコンポーネントが同じIDスペースにあるため、アクセスするのはより簡単ですが、名前の衝突を避けなければなりません。

一方、レギュラーマクロスでは、APIを使用することができます。どのレギュラーマクロコンポーネントもIDスペースの所有者です。ですから、名前の衝突はありません。



[57] インラインマクロコンポーネントはZK 2.3より追加されています。