Extension - 逆引きリファレンス - 繰り返し

<ul><ol><dl> 要素のいずれかに id 属性を付け, Items で終わる値とします. その内容に <li><dt><dd> 要素を記述します.

<li><dt><dd> 要素の内容 (子孫) には, <span> 要素や <div> 要素を使ってテキストを動的に出力することができます.

ページクラスに <ul> 要素等の id 属性と同じ名前で, 型が配列または java.util.List のプロパティ ( xxxItems ) を用意し,表示する情報を設定します.

xxxItems プロパティの要素と同じ型で,末尾の Items を取り除いた名前のプロパティ ( xxx ) を用意します. xxx プロパティがDtoまたは java.util.Map の場合は,Dtoのプロパティと同じ名前と型 ( Map の場合はキーと同じ名前で値と同じ型) のプロパティをページクラスにも持たせます.

レンダリング時, Items プロパティの要素数分,リスト項目が繰り返し表示されます.

例:テンプレートHTML (foo.html)
  • dummy
  • ]]>
    例:ページクラスのプロパティ (FooPage.java)
    例:レンダリング結果

    nameItems プロパティが "Teeda""SAStruts""Cubby" , を要素とする配列の場合, レンダリング結果は次のようになります.

  • Teeda
  • SAStruts
  • Cubby
  • ]]>

    <table> 要素または <tbody> 要素のいずれかに id 属性を付け, Items で終わる値とします. その内容に <tr> 要素を記述します.

    <tr> 要素の内容 (子孫) には, <span> 要素や <div> 要素を使ってテキストを動的に出力することができます.

    ページクラスに <tbody> 要素等の id 属性と同じ名前で, 型が配列または java.util.List のプロパティ ( xxxItems ) を用意し,表示する情報を設定します.

    xxxItems プロパティの要素と同じ型で,末尾の Items を取り除いた名前のプロパティ ( xxx ) を用意します. xxx プロパティがDtoまたは java.util.Map の場合は,Dtoのプロパティと同じ名前と型 ( Map の場合はキーと同じ名前で値と同じ型) のプロパティをページクラスにも持たせます.

    レンダリング時, Items プロパティの要素数分,行が繰り返し表示されます.

    例:テンプレートHTML (foo.html)
    dummy dummy ]]>
    例:ページクラスのプロパティ (FooPage.java)
    specItems; public SpecDto spec; //Teedaが設定 public String shortName; //Teedaが設定 public String fullName; //Teedaが設定 ]]>
    例:Dtoのプロパティ (SpecDto.java)
    例:レンダリング結果

    specItems プロパティが 3つの SpecDto を要素とする List の場合, レンダリング結果は次のようになります.

    JSF JavaServer Faces EJB Enterprise JavaBeans JPA Java Persistence API ]]>

    <tr> 要素に id 属性を付け, Items で終わる値とします. その内容に <td> 要素または <th> 要素を記述します.

    <td> 要素または <th> 要素の内容 (子孫) には, <span> 要素や <div> 要素を使ってテキストを動的に出力することができます.

    ページクラスに <tr> 要素の id 属性と同じ名前で, 型が配列または java.util.List のプロパティ ( xxxItems ) を用意し,表示する情報を設定します.

    xxxItems プロパティの要素と同じ型で,末尾の Items を取り除いた名前のプロパティ ( xxx ) を用意します. xxx プロパティがDtoまたは java.util.Map の場合は,Dtoのプロパティと同じ名前と型 ( Map の場合はキーと同じ名前で値と同じ型) のプロパティをページクラスにも持たせます.

    レンダリング時, Items プロパティの要素数分,列が繰り返し表示されます.

    例:テンプレートHTML (foo.html)
    ]]>
    例:ページクラスのプロパティ (FooPage.java)
    productItems; public Map product; //Teedaが設定 public String name; //Teedaが設定 ]]>
    例:レンダリング結果

    productItems プロパティが 3つの Map を要素とする List で,要素の Map"name" をキーとするマッピングを含む場合, レンダリング結果は次のようになります.

    Teeda SAStruts Cubby ]]>

    <span> 要素または <div> 要素に id 属性を付け, Items で終わる値とします. その内容に任意の要素を記述します.

    <span> 要素または <div> 要素の内容 (子孫) には, <span> 要素や <div> 要素を使ってテキストを動的に出力することができます.

    ページクラスに <span> 要素または <div> 要素の id 属性と同じ名前で, 型が配列または java.util.List のプロパティ ( xxxItems ) を用意し,表示する情報を設定します.

    xxxItems プロパティの要素と同じ型で,末尾の Items を取り除いた名前のプロパティ ( xxx ) を用意します. xxx プロパティがDtoまたは java.util.Map の場合は,Dtoのプロパティと同じ名前と型 ( Map の場合はキーと同じ名前で値と同じ型) のプロパティをページクラスにも持たせます.

    レンダリング時, Items プロパティの要素数分,リスト項目が繰り返し表示されます.

    デフォルトでは, id 属性に ~Items を指定した <span> 要素または <div> 要素の開始タグおよび終了タグはレンダリングされません. タグをレンダリングするには te:omittag 属性に false を指定します.

    例:テンプレートHTML (foo.html)

    ]]>
    例:ページクラスのプロパティ (FooPage.java)
    例:レンダリング結果

    nameItems プロパティが "Teeda""SAStruts""Cubby" , を要素とする配列の場合, レンダリング結果は次のようになります.

    Teeda

    SAStruts
    Cubby
    ]]>

    外側の繰り返しの要素に id 属性を付け, ItemsItems で終わる値 ( xxxItemsItems ) とします. 内側の繰り返しの要素に id 属性を付け, 外側の繰り返し要素の id 属性の値から最後の Items を取り除いた値 ( xxxItems ) とします.

    ページクラスに外側の繰り返し要素の id 属性と同じ名前 ( xxxItemsItems ) で, 型が配列の配列または java.util.ListList のプロパティを用意し,表示する情報を設定します.

    xxxItemsItems プロパティの要素と同じ型 (配列または List ) で,末尾の Items を取り除いたプロパティ ( xxxItems ) と,その要素と同じ型で 末尾の Items を取り除いたプロパティ ( xxx ) を用意します. xxx プロパティがDtoまたは java.util.Map の場合は,Dtoのプロパティと同じ名前と型 ( Map の場合はキーと同じ名前で値と同じ型) のプロパティをページクラスにも持たせます.

    例:テンプレートHTML (foo.html)
    dummy ]]>
    例:ページクラスのプロパティ (FooPage.java)
    例:レンダリング結果

    nameItemsItems プロパティの値が

    の場合,レンダリング結果は次のようになります.

    A1 A2 B1 B2 ]]>

    外側の繰り返しの要素に id 属性を付け, Items で終わる値 ( xxxItems ) とします. 内側の繰り返しの要素にも id 属性を付け, Items で終わる値 ( yyyItems ) とします.

    ページクラスに外側の繰り返し要素の id 属性と同じ名前 ( xxxItems ) で, 型が配列または java.util.List のプロパティを用意します. 要素型はDtoまたは java.util.Map とし,内側の繰り返し要素の id 属性と同じ名前 ( yyyItems ) で, 型が配列または java.util.List のプロパティ (またはキー) を用意します.

    xxxItems プロパティの要素と同じ型 (Dtoまたは Map ) と同じ型で末尾の Items を取り除いたプロパティ ( xxx ) および, yyyItems の要素と同じ型で末尾の Items を取り除いたプロパティ ( yyy ) を用意します. xxx および yyy プロパティがDtoまたは java.util.Map の場合は,Dtoのプロパティと同じ名前と型 ( Map の場合はキーと同じ名前で値と同じ型) のプロパティをページクラスにも持たせます.

    例:テンプレートHTML (foo.html)
    dummy ]]>
    例:ページクラスのプロパティ (FooPage.java)
    rowItems; public RowDto row; //Teedaが設定 public List colItems; //Teedaが設定 public ColDto col; //Teedaが設定 public String name; //Teedaが設定 ]]>
    例:行の情報を持つRowDtoのプロパティ (RowDto.java)
    colItems; ]]>
    例:列の情報を持つColDtoのプロパティ (ColDto.java)
    例:レンダリング結果
    A1 A2 B1 B2 ]]>

    テンプレートHTMLに,繰り返しの要素に付けた id 属性の名前 ( xxxItems ) の末尾に Save を付けた 隠しフィールド を用意します. このフィールドは, 繰り返しの要素より前に記述する必要があります.

    繰り返しの中で <input> 要素や <textarea> 等を使うことができます.

    ページクラスの繰り返し用のプロパティ ( xxxItems ) の要素型はDtoとします.

    例:テンプレートHTML (foo.html)
    名前
    ]]>
    例:ページクラスのプロパティ (FooPage.java)
    productItems; public NameDto product; //Teedaが設定 public String name; //Teedaが設定 ]]>
    例:レンダリング結果

    productItems プロパティが3つの要素を持つ List の場合, レンダリング結果は次のようになります.

    名前
    名前
    名前
    ]]>

    テキストフィールドに入力してフォームをサブミットすると, productItems の対応する要素 ( ProductDtoname プロパティ) に入力した値が設定された状態で doSubmit() メソッドが呼び出されます.

    注意点

    繰り返しの中に入力項目がチェックボックス一つだけの場合, 未選択の項目がリクエストパラメータに含まれないため, xxxItems の要素数が正しく復元されない場合があります. そのような場合は繰り返しの中に 隠しフィールド を含めるようにしてください.

    ダイナミックプロパティ の中でインデックスを参照します.

    ページクラスに,繰り返しの要素に付けた id 属性の値 ( xxxItems ) の末尾の ItemsIndex に置き換えた名前 ( xxxIndex ) で, 型が int のプロパティを用意します.

    レンダリング時,繰り返しの中で参照されるダイナミックプロパティのgetterメソッドの中で xxxIndex を参照することにより,現在のインデックスを得ることができます.

    例:テンプレートHTML (foo.html)
    ]]>
    例:ページクラスのプロパティ (FooPage.java)
    例:レンダリング結果

    nameItems プロパティが "Teeda""SAStruts""Cubby" , を要素とする配列の場合, レンダリング結果は次のようになります.

    Teeda SAStruts Cubby ]]>

    <tr> 要素の class 属性には, getRowStyleClass() メソッドの戻り値がレンダリングされます. getRowStyleClass() メソッドは nameIndex を参照して, 奇数行なら "odd" ,偶数行なら "even" を返します.

    <td> 要素の表示/非表示を制御するために, id 属性を is で始まる値を指定し, rowspan 属性を指定します.

    ページクラスに,繰り返しの要素に付けた id 属性の値 ( xxxItems ) の末尾の ItemsIndex に置き換えた名前 ( xxxIndex ) で, 型が int のプロパティを用意します.

    <td> 要素の id 属性と同じ名前のメソッド isXxx() の中でインデックスを参照して, <td> 要素を表示する場合は true ,表示しない場合は false を返します.

    <td> 要素の rowspan 属性に対応するダイナミックプロパティのgetterメソッド getXxxRowspan() メソッドを用意します. メソッドの中でインデックスを参照して, <td> 要素を表示する場合の rowspan 属性の値を返します. このgetterメソッドは, isXxx() メソッドが true を返した場合のみ呼び出されます.

    例:テンプレートHTML (foo.html)
    dummy dummy dummy ]]>
    例:ページクラスのプロパティ (FooPage.java)
    を表示する if (productIndex == 0) { return true; } //現在のカテゴリ名が直前の行と異なる場合はを表示する return !categoryName.equals(productItems[productIndex - 1].categoryName); } public String getCategoryRowspan() { //現在のカテゴリ名と同じカテゴリ名が連続する行数を返す int rowspan = 1; for (int i = productIndex + 1; i < productItems.length; ++i) { if (!categoryName.equals(productItems[i].categoryName)) { break; } ++rowspan; } return rowspan; } ]]>
    例:Dtoのプロパティ (ProductDto.java)
    例:レンダリング結果

    productItems が以下の要素を持っている場合,

    categoryName productName
    プレゼンテーション Teeda
    プレゼンテーション SAStruts
    プレゼンテーション Cubby
    パーシステンス Kuina-Dao
    パーシステンス S2Dao

    レンダリング結果は次のようになります.

    プレゼンテーション Teeda SAStruts Cubby パーシステンス Kuina-Dao S2Dao ]]>

    id 属性が isCategory<td> 要素は, 最初の行または, カテゴリ名が直前の行のカテゴリ名と異なる場合のみ表示されます. <td> 要素が表示される場合は, 同じカテゴリ名の行数が rowspan 属性の値となります.

    関連項目