Struts Nestedタグ

これは、Struts Nestedタグ・ライブラリの開発者ガイドです。このセクションには、Apache Software Foundation(http://www.apache.org/)およびそれ以外のサード・パーティによって作成されたドキュメントが含まれます。

このタグ・ライブラリは、Strutsカスタム・タグ・ライブラリの機能にネストされたコンテキストを提供します。

このタグは、それぞれのロジックと機能に応じて、現在のStrutsタグを拡張するレイヤーに記述します。このレイヤーによって、タグがそのタグを囲むタグを認識し、ネストするプロパティ参照をStrutsシステムへ正しく提供できます。

ネストするBeanについて
あるBeanが別のBeanに対する参照を内部的に保持している場合、そのBeanへのすべてのアクセスは、現在のBeanを通じて処理されます。あるBeanへのアクセスが別のBeanを介して処理されるというこの動作は、ネストするBeanとして知られています。この場合、最初のBeanが親Beanになります。親Beanにより参照されるBeanが、子Beanです。親と子という用語は、モデルの階層を説明する場合にも一般的に使用されます。

簡単な例
あるオブジェクトをサルにたとえてみましょう。サルの仕事はバナナの房を手に入れることです。取られた房には、それぞれ多くのバナナがぶら下がっています。これをBeanオブジェクトに置き換えると、サル・オブジェクトは手に入れる房オブジェクトへの参照を保持しており、房オブジェクトはそれぞれぶら下がっているバナナへの参照を保持していることになります。

前述の例の説明
サル・オブジェクトは房オブジェクトの親になり、房オブジェクトはサル・オブジェクトの子になります。房オブジェクトは子に当たるバナナ・オブジェクトの親になり、バナナ・オブジェクトは房オブジェクトの子になります。サルはバナナよりも高い階層にあり、バナナは房よりも低い階層にあります。

最上位の親クラスを示す用語として、階層の開始点を示す「ルート」オブジェクトという言葉を覚えておいてください。

nestedタグは、JSPマークアップ内でこのようなスタイルの階層構造を管理する際に効果的です。

注意: これらのタグの多くは、その機能をネストされたコンテキストに導入できるよう、他のライブラリのタグを拡張したものです。ネストは、単一のBeanモデルに逆らうような動作をするタグに依存しており、このタグでは、プロパティ内でネストするプロパティがそれぞれの関係性を維持する形で管理されています。プロパティがネストする場合、タグでは内部的にname属性が設定されます(適切な場合)。また、通常このタグでは、ネストするための内部的な更新ができるよう、設定済のproperty属性が使用されます。ただし、元のタグには、name属性もproperty属性も使用しないオプションが含まれる場合があります。このようなオプションを使用すると、処理がネストされたコンテキストの範囲外に移ってしまうため、通常はエラーが発生します。これらのオプションを使用するには、同様の処理を行う元のタグを使用してマークアップを行います。この例は、<nested:options>タグの説明を参照してください。

タグ名説明
checkbox(ネスト拡張)チェックボックス入力フィールドをレンダリングします。
define(ネスト拡張)指定したBeanプロパティの値に基づいてスクリプト変数を定義します。
empty(ネスト拡張)リクエストした変数がnullまたは空の文字列である場合、このタグのネストされた本体コンテンツを評価します。
equal(ネスト拡張)リクエストした変数が指定した値と等しい場合、このタグのネストされた本体コンテンツを評価します。
errors (ネスト拡張)蓄積されたエラー・メッセージのセットを条件付きで表示します。
file(ネスト拡張)ファイル選択入力フィールドをレンダリングします。
form(ネスト拡張)入力フォームを定義します。
greaterEqual(ネスト拡張)リクエストした変数が指定した値以上の場合、このタグのネストされた本体コンテンツを評価します。
greaterThan(ネスト拡張)リクエストした変数が指定した値を超える場合、このタグのネストされた本体コンテンツを評価します。
hidden(ネスト拡張)非表示フィールドをレンダリングします。
image(ネスト拡張)imageタイプのinputタグをレンダリングします。
img(ネスト拡張)HTMLのimgタグをレンダリングします。
iterate(ネスト拡張)指定したコレクションを対象に、このタグのネストされた本体コンテンツを反復します。
lessEqual(ネスト拡張)リクエストした変数が指定した値以下の場合、このタグのネストされた本体コンテンツを評価します。
lessThan(ネスト拡張)リクエストした変数が指定した値未満の場合、このタグのネストされた本体コンテンツを評価します。
link(ネスト拡張)HTMLのアンカーまたはハイパーリンクをレンダリングします。
match(ネスト拡張)指定した値がリクエストした変数の部分文字列に一致する場合、このタグのネストされた本体コンテンツを評価します。
message(ネスト拡張)国際化されたメッセージ文字列をレスポンスにレンダリングします。
messages (ネスト拡張)蓄積されたメッセージのセットを条件付きで表示します。
messagesNotPresent (ネスト拡張)指定したメッセージがこのリクエスト内に存在しない場合、このタグのネストされた本体コンテンツを生成します。
messagesPresent (ネスト拡張)指定したメッセージがこのリクエスト内に存在する場合、このタグのネストされた本体コンテンツを生成します。
multibox(ネスト拡張)チェックボックス入力フィールドをレンダリングします。
nest 子タグの参照先となる新しいレベルのネストを定義します。
notEmpty(ネスト拡張)リクエストした変数がnullまたは空の文字列ではない場合、このタグのネストされた本体コンテンツを評価します。
notEqual(ネスト拡張)リクエストした変数が指定した値と等しくない場合、このタグのネストされた本体コンテンツを評価します。
notMatch(ネスト拡張)指定した値がリクエストした変数の部分文字列に一致しない場合、このタグのネストされた本体コンテンツを評価します。
notPresent(ネスト拡張)指定した値がこのリクエスト内に存在しない場合、このタグのネストされた本体コンテンツを生成します。
options(ネスト拡張)選択オプションのコレクションをレンダリングします。
optionsCollection(ネスト拡張)選択オプションのコレクションをレンダリングします。
password(ネスト拡張)パスワード入力フィールドをレンダリングします。
present(ネスト拡張)指定した値がこのリクエスト内に存在する場合、このタグのネストされた本体コンテンツを生成します。
radio(ネスト拡張)ラジオ・ボタン入力フィールドをレンダリングします。
rootフォームを必要とせずにネストされた階層を開始します。
select(ネスト拡張)選択要素をレンダリングします。
size(ネスト拡張)CollectionまたはMap内の要素数を含むBeanを定義します。
submit(ネスト拡張)送信ボタンをレンダリングします。
text(ネスト拡張)テキスト・タイプの入力フィールドをレンダリングします。
textarea(ネスト拡張)テキスト領域をレンダリングします。
write(ネスト拡張)指定したBeanプロパティの値を現在のJspWriterにレンダリングします。
writeNesting 現在のネスト・レベルまたはプロパティにより定義されたネスト・レベルを出力します。
checkbox: (ネスト拡張)チェックボックス入力フィールドをレンダリングします。

このタグは、<html:checkbox>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

define: (ネスト拡張)指定したBeanプロパティの値に基づいてスクリプト変数を定義します。

このタグは、<bean:define>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

empty: (ネスト拡張)リクエストした変数がnullまたは空の文字列である場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:empty>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

equal: (ネスト拡張)リクエストした変数が指定した値と等しい場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:equal>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

errors:  (ネスト拡張)蓄積されたエラー・メッセージのセットを条件付きで表示します。

このタグは、<html:errors>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

file: (ネスト拡張)ファイル選択入力フィールドをレンダリングします。

このタグは、<html:file>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

form: (ネスト拡張)入力フォームを定義します。

このタグは、<html:form>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

greaterEqual: (ネスト拡張)リクエストした変数が指定した値以上の場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:greaterEqual>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

greaterThan: (ネスト拡張)リクエストした変数が指定した値を超える場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:greaterThan>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

hidden: (ネスト拡張)非表示フィールドをレンダリングします。

このタグは、<html:hidden>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

image: (ネスト拡張)imageタイプのinputタグをレンダリングします。

このタグは、<html:image>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

img: (ネスト拡張)HTMLのimgタグをレンダリングします。

このタグは、<html:img>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

iterate: (ネスト拡張)指定したコレクションを対象に、このタグのネストされた本体コンテンツを反復します。

このタグは、<logic:iterate>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

lessEqual: (ネスト拡張)リクエストした変数が指定した値以下の場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:lessEqual>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

lessThan: (ネスト拡張)リクエストした変数が指定した値未満の場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:lessThan>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

link: (ネスト拡張)HTMLのアンカーまたはハイパーリンクをレンダリングします。

このタグは、<html:link>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

match: (ネスト拡張)指定した値がリクエストした変数の部分文字列に一致する場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:match>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

message: (ネスト拡張)国際化されたメッセージ文字列をレスポンスにレンダリングします。

このタグは、<bean:message>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

messages:  (ネスト拡張)蓄積されたメッセージのセットを条件付きで表示します。

このタグは、<html:messages>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

messagesNotPresent:  (ネスト拡張)指定したメッセージがこのリクエスト内に存在しない場合、このタグのネストされた本体コンテンツを生成します。

このタグは、<logic:messagesNotPresent>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

属性名説明
message (RT EXPR)
name (RT EXPR)
property (RT EXPR)
messagesPresent:  (ネスト拡張)指定したメッセージがこのリクエスト内に存在する場合、このタグのネストされた本体コンテンツを生成します。

このタグは、<logic:messagesPresent>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

属性名説明
message (RT EXPR)
name (RT EXPR)
property (RT EXPR)
multibox: (ネスト拡張)チェックボックス入力フィールドをレンダリングします。

このタグは、<html:multibox>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

nest:  子タグの参照先となる新しいレベルのネストを定義します。

このタグを使用すると、ネストされた階層の論理的なネスト・レベルを簡単に定義できます。このタグは、明示的なロジックを実行するものではなく、単なるプレースホルダです。このタグにより、子タグのレベル・プロパティを明示的に設定する必要がなくなります。

iterateタグが他のタグの親になる場合と同じように機能しますが、このタグには反復などのロジックは含まれません。

たとえば、次のようなタグがあるとします。

<nested:write property="myNestedLevel.propertyOne" />
<nested:write property="myNestedLevel.propertyTwo" />
<nested:write property="myNestedLevel.propertyThree" />
      
これは、次のように書き換えることができます。
<nested:nest property="myNestedLevel" >
  <nested:write property="propertyOne" />
  <nested:write property="propertyTwo" />
  <nested:write property="propertyThree" />
</nested:nest >
      

属性名説明
propertyこのタグおよびすべての子タグの参照先を示すプロパティを指定します。(RT EXPR)
notEmpty: (ネスト拡張)リクエストした変数がnullまたは空の文字列ではない場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:notEmpty>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

notEqual: (ネスト拡張)リクエストした変数が指定した値と等しくない場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:notEqual>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

notMatch: (ネスト拡張)指定した値がリクエストした変数の部分文字列に一致しない場合、このタグのネストされた本体コンテンツを評価します。

このタグは、<logic:notMatch>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

notPresent: (ネスト拡張)指定した値がこのリクエスト内に存在しない場合、このタグのネストされた本体コンテンツを生成します。

このタグは、<logic:notPresent>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

options: (ネスト拡張)選択オプションのコレクションをレンダリングします。

このタグは、<html:options>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

注意: このタグのネストされたコンテキストは、propertyプロパティおよび内部的なnameプロパティの使用に依存しています。nestedタグは、これらのプロパティを使用して、プロパティに独自の値を設定するよう試みます。ただし、このタグにより拡張される<html:options>タグには、これらのプロパティを使用しないオプションも含まれます。このオプションを利用する場合は、nestedタグのかわりに<html:options>タグを使用してマークアップを行います。

たとえば、このタグにはcollectionオプションがありますが、このオプションを使用すると、htmlのoptionタグにおけるタイトルと値にアクセスするためのプロパティを含む、それ自体がオブジェクトのリストである個別のBean参照を指定できます。このオプションをネストされたコンテキスト(リストはネストされたBeanのプロパティ)で使用する場合は、nested:defineタグと元のoptionsタグを使用します。

<nested:nest property="myNestedLevel" />
  <nested:define property="collectionList" />
  <html:options collection="collectionList"
                  property="labelProperty"
             valueProperty="valueProperty" />
</nested:nest >

optionsCollection: (ネスト拡張)選択オプションのコレクションをレンダリングします。

このタグは、<html:optionsCollection>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

password: (ネスト拡張)パスワード入力フィールドをレンダリングします。

このタグは、<html:password>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

present: (ネスト拡張)指定した値がこのリクエスト内に存在する場合、このタグのネストされた本体コンテンツを生成します。

このタグは、<logic:present>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

radio: (ネスト拡張)ラジオ・ボタン入力フィールドをレンダリングします。

このタグは、<html:radio>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

root: フォームを必要とせずにネストされた階層を開始します。

このタグを使用すると、フォームの処理とその関連するオーバーヘッドを回避する形で、nestedタグで共通のBean参照を使用できます。これは、このタグのname属性が、JSPのスコープ内にあるBeanの名前と一致している(すなわち、Strutsタグでの通常の方法でBeanを検出できる)場合にのみ有効です。たとえば、jsp:useBeanタグで使用するBeanをロードできます。

このタグは、name属性を指定せずに使用することもできますが、それは現在のJSPが、別のファイルでの指定により動的にインクルードされている場合にかぎられます。このインクルードが適切に行われていない場合、nameを含まないタグは実行できません。nameが含まれていないと、nestedタグでは、ロジックを必要とするBean参照およびプロパティ参照を特定できないためです。

注意: name属性によるBeanへのアクセスは、他の親タグからの参照を検出する処理に優先します。したがって、nameを指定する場合、その名前に該当するBeanが存在している必要があります。この方法により、それ自体他のJSPにインクルードされているJSP内で、個別のBeanを使用できます。

属性名説明
nameすべてのネストされた子タグがBean参照を取得する対象のBeanの名前。(RT EXPR)
select: (ネスト拡張)選択要素をレンダリングします。

このタグは、<html:select>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

size: (ネスト拡張)CollectionまたはMap内の要素数を含むBeanを定義します。

このタグは、<bean:size>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

submit: (ネスト拡張)送信ボタンをレンダリングします。

このタグは、<html:submit>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

text: (ネスト拡張)テキスト・タイプの入力フィールドをレンダリングします。

このタグは、<html:text>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

textarea: (ネスト拡張)テキスト領域をレンダリングします。

このタグは、<html:textarea>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

write: (ネスト拡張)指定したBeanプロパティの値を現在のJspWriterにレンダリングします。

このタグは、<bean:write>タグの拡張です。タグ属性と使用方法の詳細は、該当するタグのドキュメントを参照してください。

writeNesting:  現在のネスト・レベルまたはプロパティにより定義されたネスト・レベルを出力します。
このタグを使用すると、nestedタグで使用するネストされたプロパティ参照にアクセスできます。スクリプト変数を公開するか、または単に値を書き出します。
属性名説明
filtertrueまたはfalse。結果をURLエンコードするかどうかをタグに指定します。結果がURLハッキングに必要な内容である場合、JavaScriptで利用されることもあります。(RT EXPR)
property指定しない場合、「./」または「this/」が指定された場合と同様に書き出します。(RT EXPR)

Copyright (c) 2000-2002, Apache Software Foundation