- - PR -
配列のデータを取得したい。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-11-02 21:17
こんな時間に質問するなんて、大変恐縮です・・・
現在、一週間ほど調査したりいろいろと試したりしていますが、 解決できない(*o*;)以下のような問題に悩まされています。 わかりにくい説明があるかと思いますが、ご教授願います。 ■行いたい手順■ @サーバにSQLを発行(社員番号がキー)して、複数件のデータを取得 AsetAttributeで作成したリストを投げる Ajsp側でiterateを用いてtextタグにデータをデフォルト表示 Bクライアントが業務内容または業務時間を変更 C変更値も含め、すべてのテキストデータを取得して、変更内容確認 画面を作成する(つまり、textからwriteタグの表現に変わります) ●配列のデータ以外ならば値を取得できるのですが、複数件レコードが表示される 今回の場合には、indexedを使用しなければ一レコードずつのデータを把握できず、 次画面に表現できない・・・。という悩みなのです。ですが、indexedタグだと 思うようにデータが取得できません。以下、実際のコードを簡略化したものです。 *Idには社員番号が入ります Actionクラス(MenuAction.java)-------------------------------------------- List gyoumuList = new ArrayList(); String str="SELECT SyainNo, Gyoumu, Times FROM T001GyoumuIchiran WHERE SyainNo=" + Id; java.sql.ResultSet rs = db.getResultSet(str); while(rs.next()){ g = new MenuForm(); g.setSyainNo(rs.getString("SyainNo")); g.setGyoumu(rs.getString("Gyoumu")); g.setTimes(rs.getString("Times")); gyoumuList.add(g); { request.setAttribute("gyoumuList",gyoumuList); ------------------------------------------------------------------------- jsp(Nyuuryoku.jsp)------------------------------------------------------- <bean:define id="glist" name="gyoumuList" type="java.util.List" /> <logic:iterate id="gijutsu" name="glist" type="MenuForm" > <bean:define id="g" name="gijutsu" type="gyoumu.form.MenuForm" /> <tr> <th nowrap> <html:text property="syainNo" size="8" maxlength="10" name="g" indexed="true" /> </th> <th nowrap> <html:text property="gyoumu" size="30" maxlength="40" name="g" indexed="true" /> </th> </tr> </logic:iterate> --------------------------------------------------------------------------- いろいろ調べましたが、indexedタグは使用しない方がよい。と書いてあったり、 nameとpropertyの値を入れ替えてあったり・・・実践しましたが、うまくいきません。 ・・・なんだが問題の焦点があいまいになってしましました。(すいません) 配列データの取得を行いたいが、うまくいかないということです。 私事ですが、現在2人で調査して開発を行っていますが、この部分以外は完成しております。 完成目前にして、工数が足りません・・・。(調査に時間がかかり、何回か納期を延ばして います・・・)なにとぞ、解決の糸口が欲しい!!!と思うのです。 情報不足かもしれませんが、どうぞよろしくお願いしますm(_ _)m"""""" | ||||
|
投稿日時: 2003-11-02 21:36
すいません。自己レスです。開発環境についてです。
JDK: 1.4.1.05 tomcat: 4.1.27 eclipse: 2.1.1(日本語環境 easystruts利用) struts: 1.1 | ||||
|
投稿日時: 2003-11-03 05:52
パルプです。うるるとさららさん、大変お疲れさまです。
私もstrutsは詳しくのないのですが、お力になれればと思い、投稿させていただきます。 配列を取得できないとのことですが、 Nyuuryoku.jspからの値を受けるActionFormはどのようになっていますか? 現在のJSPを評価したhtmlのソースでは、フォームのエレメントの名前が g[0].shainNoみたいな感じであれば、ActionFormの方でちょっと工夫します。 MenuFormBeanのListにアクセスする感じです。
こんな感じでしょうか。 (検証してないので動くかどうか分かりませんが、感じってことで) もし見当違いであれば無視してください。すいません。 健闘をお祈りしています! | ||||
|
投稿日時: 2003-11-03 10:37
お疲れ様です。アティです。
質問の回答じゃないのですが、ちょっと気になったので。
上のやり方はセキュリティ的に問題があるので、 PreparedStatementを使うことをお勧めしますよ。 例)Idに「12345 or 1 = 1」渡された場合 既に使ってましたら、無視しちゃってください。 [ メッセージ編集済み 編集者: アティ 編集日時 2003-11-03 10:37 ] | ||||
|
投稿日時: 2003-11-03 14:33
パルプさん、アティさん、休日にも関わらず、早朝からのレスありがとうございました。
・パルプさん パルプさんのコードでうまくいきました!(^o^)ちなみに、ActionBeanでの実装は、 以下のようになりました。 ------------------------------------------------------------------- //業務情報 List gyoumuList = new ArrayList();//業務のリスト int gc = Integer.parseInt(n.getGCount());//業務件数 for(int c=0; c<gc; c++){ MenuForm g = n.getG(c); NyuuryokuForm gyoumu = new NyuuryokuForm(); gyoumu.setSyainNo(g.getSyainNo()); gyoumu.setGyoumu(g.getGyoumu()); gyoumu.setTimes(g.getTimes()); gyoumuList.add(gyoumu); } request.setAttribute("gyoumuList",gyoumuList); ------------------------------------------------------------------ これで、確認画面にhiddenでデータを取らせてやれば、入力画面と同じ 方法で値も取得できますし、writeで表示もできます!!値が取れる事 が確認できましたので、これからあせって型チェック等も実装したいと 思います・・・。 (涙)本当にありがとうございました!! ・アティさん、Idの件ですが、すぐに実装は時間的に無理そうです・・・ (すいません)ですが、二次予定が組まれているので、その時に参考 にさせて頂きます。 貴重なご指摘、ありがとうございました。 以後、精進致します! | ||||
1
