[Seasar-user:13601] [Teeda] forEach内でのte:includeについて

shaku - i-navigator corporation - [E-MAIL ADDRESS DELETED]
2008年 4月 7日 (月) 19:56:15 JST


いつもお世話になります。
釈@アイ・ナビゲーター と申します。

早速ですが一件ご教示頂ければと存じます。

以前のひがさんのブログで以下の記事を拝見したのですが、

--------------------------------------
<te:include te:src="hoge.html"/>
同一ディレクトリの場合は、HTMLのファイル名だけでOKですが、異なるディレク 
トリの場合は、/サブアプリケーション名/HTML名にします。要は、viewRootPath 
以下のパスです。
src属性は、DynamicPropertyを使って動的に書き換えることもできます。また、 
ForEachの中で、te:includeタグを使うこともできます。
hoge.htmlはHogePage.javaにマッピングされていて、HogePageに入力された内容 
を受け取りたい場合は、HogePageのプロパティを用意しておけばOKです。
includeしているページのintialize()、prerender()も呼び出すことができます。
--------------------------------------

forEach内のte:includeタグでインクルードしたPageに値を設定することは可能 
なのでしょうか?
いま実現したいと考えているものは、
インクルードされるページ(テンプレート的に考え)に、プロパティをセットし、 
動的に表示を変えたいと考えているのです。
たとえば、インクルードされるページにカレンダの雛型を作成しておき、月のプ 
ロパティをセットして繰り返しカレンダを生成する感じです。

具体的には、

hoge.html (インクルードする側)
------------------------------
<html>
<table>
   <tbody id="hogeItems">
     <tr><td>
       <te:include te:src="hogeInclude.html"/>
     </td></tr>
   </tbody>
</table>
</table>


HogePage.java
-------------
public class HogePage {
   public hogeDto[] hogeItems;
   public HogeDto hogeDto;

   public Class<?> prerender() {
     hogeItems = new hogeDto[3]
     for(int index=0;index<3;index++){
       hogeDto dto = new hogeDto();
       dto.month = index;

       hogeItems[index] = dto;
     }
   }
}

HogeDto.java
------------
public class HogeDto implements Serializable{

   private static final long serialVersionUID = 1L;

   public int month;

}


hogeInclude.html (インクルードされる側)
---------------------------------------
<html>
<table>

   <span id="month"></span>月
   <!--カレンダ表示テンプレート-->

</table>
</table>


HogeIncludePage.java
--------------------
@Component(instance = InstanceType.PROTOTYPE)  ←必要?
public class HogeIncludePage {
   public int month;

   public Class<?> prerender() {

     //カレンダ生成ロジック(month月のカレンダを生成)

   }
}


上記の例でいうと、実現したい結果は、
hoge.htmlに、1月、2月、3月の3つのカレンダを表示したいのです。
hogeIncludePageのインスタンスが3つ生成され、それぞれのmonthプロパティに 
hogeItemsに保持されているhogeDto.monthの値をセットし表示できればと考えて 
います。
includeの際のインスタンス生成のタイミングなど理解不足で実現可能かどうか 
も理解できていません、すいません。
includeの基本的な使い方が間違っているのでしょうか…。

説明がへたくそですいません。質問の趣旨が伝わりましたでしょうか?
お忙しいところお手数をお掛け致しますが、よろしくお願い致します。


株式会社アイ・ナビゲーター
釈


Seasar-user メーリングリストの案内