JSTLコア・ライブラリ - <c:set>タグ
スコープ変数の値またはターゲット・オブジェクトのプロパティを設定します。
構文
構文1: value属性を使用してスコープ変数の値を設定
- <c:set value=value
- var=varName [scope={page|request|session|application}]/>
構文2: ボディ・コンテンツを使用してスコープ変数の値を設定
- <c:set var=varName [scope={page|request|session|application}]>
- body content
- </c:set>
構文3: value属性を使用してターゲット・オブジェクトのプロパティを設定
- <c:set value=value
- target=target property= propertyName/>
構文4: ボディ・コンテンツを使用してターゲット・オブジェクトのプロパティを設定
- <c:set target=target property= propertyName>
- body content
- </c:set>
属性
- value
- 評価される式。
- var
- アクションに指定された値を保持するエクスポート・スコープ変数の名前。スコープ変数の型は、value式の評価結果の型です。
- scope
- varのスコープ。
- target
- プロパティを設定するターゲット・オブジェクト。setter propertyプロパティを持つJavaBeansオブジェクト、または java.util.Mapオブジェクトとして評価される必要があります。
- property
- ターゲット・オブジェクトに設定するプロパティの名前。
NULLおよびエラーの処理
- 構文3および4: 次のいずれかの状況で例外をスローします。
- targetがNULLと評価された。
- targetがjava.util.Mapオブジェクトではなく、propertyプロパティの設定をサポートするJavaBeansオブジェクトでもない。
- valueがNULLの場合、次の処理が行われます。
- 構文1: varとscopeで定義したスコープ変数が削除されます。
- scope属性を指定した場合、PageContext.removeAttribute(varName, scope)のセマンティクスに従ってスコープ変数が削除されます。
- scope属性を指定しない場合、PageContext.removeAttribute(varName)のセマンティクスに従ってスコープ変数が削除されます。
- 構文3:
- targetがマップの場合、propertyで指定したキーを持つエントリを削除します。
- targetがJavaBeanコンポーネントの場合、propertyをNULLに設定します。
説明
構文1および2では、varとscopeで指定したスコープ変数の値を設定します。
構文3および4では、次の処理が行われます。
- target式がjava.util.Mapオブジェクトとして評価された場合、propertyで指定したキーに関連付けられている要素の値を設定します。要素が存在しない場合は、Mapオブジェクトに要素を追加します。
- 要素が存在する場合は、JavaBeansオブジェクト・ターゲットのpropertyプロパティの値を設定します。設定する値の型がBeanプロパティの型に一致しない場合、式言語で定義された変換ルールに従って変換が実行されます(
http://www.jcp.org/aboutJava/communityprocess/first/jsr052/index.html
にある『JavaServer Pages Standard Tag Library 1.0 Specification』のA.7項を参照)。したがって、NULL値の場合を除き、<c:set>
によるBeanプロパティの設定は、ELを使用したアクションの属性値の設定とまったく同じです。これらの変換ルールで適切な型変換を判別できない場合は、実行時にJspExceptionがスローされます。
関連項目
JDeveloperのJSTLタグ・ライブラリについて
リファレンス: JavaServer Pages標準タグ・ライブラリ(JSTL)
Copyright © 1997, 2004, Oracle. All rights reserved.