- PR -

strutsを使用して画面で表示されたListの一括UPDATE

1
投稿者投稿内容
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2007-09-18 20:15
[開発環境]
Tomcat5.0
jdk1.4
struts1.3.8

サーバーサイドでbeanのlistを作成して、画面上に編集形式で表示しております。
編集後、一括で更新を行います。

画面上に可変(listあるだけ表示)で表示されたレコードの編集後の値をサーバー側で取得する方法について考えたのですが、あまりパッとする方法が思いつきません。

[考えた方法]
レコードのプロパティ分のString[]を設けて画面より値を取得し、それたString[]を元にサーバーサイドでBeanを作成する。
例えば、下記jspのようにnameを設定し、サーバー側でmultipleのような感覚で各列ごとのString[]を取得しBeanを作成する。

[hogehoge.jsp]
<logic:iterate id="element" collection="<%=list%>" type="com.beans.HogeBean">
<input type="text" name="prop1" value="<%=element.getProp1()%>"/>
<input type="text" name="prop2" value="<%=element.getProp2()%>"/>
<input type="text" name="prop3" value="<%=element.getProp3()%>"/>
</logic:iterate>

初歩的な質問でもうしわけありません。
私の考えた方法がいまいちで、もっと良い方法がありそうな気がしてなりません。
どなたかご存知の方がいらっしゃいましたら教えてください。
よろしくお願いします。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-09-20 00:31
Strutsの機能をもうすこし勉強することをお勧めします。
たぶんやりたいことが見えてくるはずです。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-09-20 11:42
長いことStrutsから離れているので具体的なアドバイスはできませんが、
複数レコードを一度に編集できる機能を作る場合、
DBでいうところのカラムに相当する単位でHTMLのinputタグのname属性を揃え、
それをServlet側でgetParameterValues()でString配列として受け取る。
ここまでは、ももさんの考えと同じであると思います。

StrutsなどのフレームワークではServletRequest#getParameter()をして
name属性と同名のBeanのフィールドに格納してくれる機能を持ちますが、
標準の機能では多分配列を元にBeanの配列を作ることはサポートしていないのではないでしょうか。

この格納処理(バインドと一般には言いますが)の部分を自力でカスタマイズ
するような方向で対応すると、フレームワークの処理フローを阻害せずに
組み込めるのではないかと思います。
Strutsというピンポイントなターゲットで具体的にどうやる、
という回答ができなくて申し訳ないところですが、設計指針にはなるのではないでしょうか。

# 「初歩的な質問」かどうかをどうやって判断したのでしょう?
# 私の見解では難しい問題と思います。HTTPと配列は相性が悪い…。
# 適当に初歩などと言うのは控えたほうがよいでしょうね。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2007-09-21 18:51
>朝日奈ありす
反論もございません。
急ぎで「できるorできない」の判断を迫られていましたので、
質問させていただきました。
申し訳ありませんでした。
>nagise
設計指針についてのアドバイスありがとうございました。
>「初歩的な質問」かどうかをどうやって判断したのでしょう?
> 私の見解では難しい問題と思います。HTTPと配列は相性が悪い…。
> 適当に初歩などと言うのは控えたほうがよいでしょうね。
すみませんでした。他のフレームワークを使用していたときに、今回問題となっている機能がサポートされていたので、きっとstrutsでもサポートしていて、単に私の知識不足のためにわからないのだと思っておりました。
決して、適当に初歩といっていたのではないことだけは理解していただきたいと思います。

最後に、質問をあげさせてもらったあとに自分でひたすら調べてみたところ、下記サイトを発見し解決しました。

詳細は下記サイトを参照していただきたいのですが、概要としましてはFormにちょっとした仕掛けをし、画面上でindex設定を行うと配列を取得することができるようです。

http://civic.xrea.jp/2006/06/09/struts-using-list/

以上をもちまして、このスレッドは終了させてください。
1

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