- PR -

1:N の親子関係のデータをlogic:iterateで出力する方法

1
投稿者投稿内容
Zou
会議室デビュー日: 2007/04/24
投稿数: 7
投稿日時: 2007-05-07 14:19
いつもこちらの掲示板を参考にさせて頂いております。

現在、下記のような1:Nの親子関係のデータをJSP上のlogic:iterateタグで
出力する方法を探しているのですが、うまくできません。
(Struts初心者のため、logic:iterateで表現することが可能かどうかも
 イマイチわかっておりません。。申し訳ないです)

1:Nのデータは親子関係の別々のテーブルからSELECTした値を出力させる予定です。

(例)
-------
AAA ←親データ
-------
  CCC    ←子データ@
-------
  EEE    ←子データA
-------
BBB ←親データ
-------
  DDD ←子データ@
-------
  RRR ←子データA
-------
  WWW ←子データB
-------

1:1の親子関係であれば、logic:iterateをネストさせることが解決できる
のですが、1:Nのため困っております。
logic:iterateタグ以外に、他のタグで上記のような
データを出力することが可能であれば、それでも問題ございません。

初歩的な質問で申し訳ございませんが、どなたかご存知の方がいらっしゃれば
ご教授いただきたく思います。


nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-07 14:31
親子関係なのだからループを二重にするのが自然な考え方ですね。
Strutsには詳しくないですがnestedタグあたりでできるのかな?
googleなどの検索エンジンを使って調べてみるとよいでしょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-05-07 15:12
データの親子関係が1:Nの擬似クラスですが、
コード:
//親の値クラス
class Parent{

	String getLabel();//表示項目

	//子の配列を返す
	Child[] getChildren();//親1に対して子がN件
}

//子の値クラス
class Child{

	String getLabel();;//表示項目
}


という構成になっており、スコープにparentsという名前で
Parentの配列(もしくはコレクション)が格納されているのであれば、
コード:
<logic:iterate id="parent" name="parents>
	<bean:write name="parent" property="label"/><br>
	<logic:iterate id="child" name="parent" property="children">
		&nbsp;&nbsp;&nbsp;&nbsp;<bean:write name="child" property="label"/><br>
	</logic:iterate>
</logic:iterate>


という感じでいけると思います。
Zou
会議室デビュー日: 2007/04/24
投稿数: 7
投稿日時: 2007-05-07 16:37
nagiseさん かつのりさん

早々のアドバイスありがとうございました!
早速試してみたいと思います。
(すぐに出来るようであれば、改めてご報告させていただきます。)
1

スキルアップ/キャリアアップ(JOB@IT)