ColdFusion MX
目 次 > ColdFusion MX アプリケーションの開発 > カスタム CFML タグの作成と使用方法 > カスタムタグへのデータの受け渡し > CFML 構造体を使用したカスタムタグ属性の受け渡し O

CFML 構造体を使用したカスタムタグ属性の受け渡し

構造体を使用してカスタムタグに属性を渡すには、予約属性 attributecollection を使用します。attributecollection 属性では、キーとしての属性名と値としての属性値を含んでいる構造体を参照する必要があります。カスタムタグを呼び出すときに、attributecollection と他の属性を任意で組み合わせることができます。

attributecollection 属性に指定した構造体に含まれているキーと値のペアは、カスタムタグページの Attributes スコープにコピーされます。この操作は、カスタムタグを呼び出すときに、個々の属性として attributecollection エントリを指定する場合と同じ効果があります。カスタムタグページでは、Attributes.CustomerName、Attributes.Department_number などの他の属性と同様に、attributecollection を使用して渡された属性を参照します。

メモ: タグ属性と attributecollections の両方を使用することができます。両方の方法で同じ名前を持つ属性が渡されると、ColdFusion はカスタムタグにタグ属性のみを渡し、属性のコレクションからの対応する属性は無視します。

カスタムタグの操作では、カスタムタグの属性のコレクションを保持している構造体を参照するために attributecollection 属性が予約されています。attributecollection がそのようなコレクションを参照しない場合、ColdFusion によってテンプレートの例外が作成されます。

次の例では、attributecollection 属性を使用して、4 つの属性のうちの 2 つを渡します。

<cfset zort=StructNew()>
<cfset zort.x = "-X-">
<cfset zort.y = "-Y-">
<cf_testtwo a="blab" attributecollection=#zort# foo="16">

testtwo.cfm に次のコードが含まれている場合は、

--- カスタムタグ ---<br>
<cfoutput>#attributes.a# #attributes.x# #attributes.y#
   #attributes.foo#</cfoutput><br>
--- 終了カスタムタグ ---

次のステートメントが出力されます。

--- カスタムタグ ---
blab -X- -Y- 16
--- 終了カスタムタグ ---

attributecollection は、あるカスタムタグの Attributes スコープ全体を別のカスタムタグに渡すために使用します。最初のカスタムタグが 2 番めのカスタムタグを呼び出し、すべての属性を最初のタグから 2 番めのタグに渡す場合に、これを使用します。

たとえば、次のコードを含んでいるカスタムタグを呼び出します。

<cf_first attr1="foo" attr2="bar">

最初のカスタムタグのすべての属性を 2 番めのカスタムタグに渡すには、first.cfm に次のステートメントを含めます。

<cf_second attributecollection="#attributes#">

second.cfm の本文で、渡すパラメータを次のように参照します。

<cfoutput>#attributes.attr1#</cfoutput>
<cfoutput>#attributes.attr2#</cfoutput>

目 次 > ColdFusion MX アプリケーションの開発 > カスタム CFML タグの作成と使用方法 > カスタムタグへのデータの受け渡し > CFML 構造体を使用したカスタムタグ属性の受け渡し O