- PR -

Strutsの一覧表示

投稿者投稿内容
TAKA
会議室デビュー日: 2002/06/20
投稿数: 17
投稿日時: 2003-11-06 10:32
いつもお世話になっております。m(_ _)m
Strutsを使って一覧表示画面で複数のレコードデータを表示し、htmlのtextタグを1レコードづつある表示項目に埋め込みその値を取得する方法がありましたら教えて頂けないでしょうかm(_ _)m
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-11-06 14:21
ちょっと意図をつかみかねますが、
1)Strutsを使って一覧表示画面で複数のレコードデータを表示する方法
2)htmlのtextタグを1レコードづつある表示項目に埋め込む方法
3)その値を取得する方法
の三つの質問が含まれているように見えます。
実際にわからないのはどれでしょう?
#恐らく 3) についてご質問されているのかと思いますが

1,2) は logic:iterate で行えます。
3)は ActionForm のプロパティを配列にすることで取得できます。
Struts のサンプルにもありますのでご覧ください。

見当違いでしたらもう少し具体的な要件をお聞かせいただければと思います。

[ メッセージ編集済み 編集者: インギ 編集日時 2003-11-06 14:22 ]
TAKA
会議室デビュー日: 2002/06/20
投稿数: 17
投稿日時: 2003-11-06 14:48
インギ様ご返答ありがとうございます。

やりたい事ですが仰るとおり最初の書き方ではわかりませんよね。。。
申し訳ございませんでしたm(_ _)m

インギ様のレスを読み整理ができましたので改めて書きます。

Strutsを使って一覧表示画面で複数のレコードデータに
htmlのtextタグを1レコードづつある表示項目に埋め込み
その値を取得する際、配列ではなく1レコードつづを
ActionFormで実装するにはどうすればよいのでしょうか?

親のActionFromがプロパティとしてLsitなどを実装し
その中に1レコードのTextフィールドに対しての画面の入力値を格納する
子供のActionFromを格納すると言った方法を取りたいのですが
Strutsで可能でしょうか?
もし可能でしたらその方法をご教授くだされば幸いですm(_ _)m
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-11-06 15:37
引用:

親のActionFromがプロパティとしてLsitなどを実装し
その中に1レコードのTextフィールドに対しての画面の入力値を格納する
子供のActionFromを格納すると言った方法を取りたいのですが
Strutsで可能でしょうか?


つまりこういうことでしょうか。
コード:
public class HogeForm
{
	private List data;

	public List getData()
	{
		return this.data;
	}
}


としておき、「この"data"というListにはString型の値が入っている」。
この場合、StrutsのTaglibで以下のように表現できます。ただし、このHogeFormという
型のFormBeanのインスタンスが"hoge"という名前で参照できると仮定します。
コード:
<logic:iterate id="datum" name="hoge" property="data">
	<bean:write name="datum"/>
</logic:iterate>


もし、このListにString型ではなくて一般的なオブジェクト(HogeData)型の値が
入っているとすれば、
コード:
public class HogeDatum
{
	private String name;
	private String value;

	public List getName()
	{
		return this.name;
	}

	public List getValue()
	{
		return this.value;
	}
}


として
コード:
<logic:iterate id="hogeDatum" name="hoge" property="data" type="HogeDatum">
	<bean:write name="hogeDatum" property="name"/>
	<bean:write name="hogeDatum" property="value"/>
</logic:iterate>


ってな感じです。

お探しのものはこのようなものでしょうか?
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-11-06 15:42
自己レスです。
もしかして、「ネストしたBeanの内容を表示」ではなく、「フォームの内容をネスト
したBeanに格納」したいのでしょうか?
だとすると、私も分かりません。そのようなことは出来ないのではないでしょうか。
TAKA
会議室デビュー日: 2002/06/20
投稿数: 17
投稿日時: 2003-11-06 15:55
>フォームの内容をネストしたBeanに格納」したいのでしょうか?
はい、そうなんです。ネストしたBeanにフォームの内容を格納したいのです。
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-11-08 11:28
たぶん、以下のようなコードで出来ると思います。

(以下はおばけさんのコードをもとにしています。)

コード:---------------------------------------------------------------

public class HogeForm
{
  private List data;

  public List getData(int iIndex)
  {
   while (this.data.size() <= iIndex)
   {
    this.data.add(new HogeDatum());
   }
   return this.data.get(iIndex);
  }
}

public class HogeDatum
{
  private String name;
  private String value;

  public String getName()
  {
   return this.name;
  }

  public String getValue()
  {
   return this.value;
  }
}
--------------------------------------------------------------------------------

とします。
JSP側では、

--------------------------------------------------------------------------------

<logic:iterate id="data" name="hoge" property="data" type="HogeDatum">
<html:text name="data" property="name" indexed="true"/>
<html:text name="data" property="value" indexed="true"/>
</logic:iterate>


------------------------
このように、「indexed」属性を利用します。
このとき、logic:iterate の idを「data」にするのがミソです。
indexed属性は慣れると便利ですが、わかりづらいので
使うかどうかは本人次第です。






[ メッセージ編集済み 編集者: bee 編集日時 2003-11-08 11:34 ]

[ メッセージ編集済み 編集者: bee 編集日時 2003-11-08 11:34 ]
SDM
会議室デビュー日: 2004/06/01
投稿数: 10
投稿日時: 2004-06-01 13:03
はじめまして。
上記コードですと
JSP→HTMLでは
<!--1Rec目 -->
<HTML type="text" name="data[0].name" value="?" >
<HTML type="text" name="data[0].value" value="?" >
<!--2Rec目 -->
<HTML type="text" name="data[1].name" value="?" >
<HTML type="text" name="data[1].value" value="?" >
・・・・
となりますが、これをFormBeanに格納する為にセッターが必要かと思うのですが
その部分のサンプルコーディングを教えていただけないでしょうか?

よろしくお願いいたします。

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