Strutsのデータ受け渡しについて

このQ&Aのポイント
  • Strutsのデータ受け渡しについて画面遷移時のデータの引継ぎ方法を解説します。
  • 画面遷移時にデータを引き継ぐ方法として、Strutsを使用することが一般的です。
  • 具体的には、画面Aで取得したデータをActionクラスで保持し、次の画面でそれを取得することができます。
回答を見る
  • ベストアンサー

Strutsのデータ受け渡しについて

画面遷移時のデータの引継ぎについて。 画面A→画面B とデータを引き継ぎたい状態です。 画面AにはDBから取得した値を一覧表示しています。 --Action-- TestLogic testLogic = new TestLogic (); ArrayList<datas> list = testLogic.getDatas(); request.setAttribute("sendMail", list); 補足:ArrayList<datas> listにはdatas.classが格納されています。 datasクラスはDB項目に合致したgetterとsetterをもった値保持用のクラスです。 --JSP-- <nest:iterate id="sendData" name="sendMail" indexId="idx"> <html:checkbox name="sendData" property="checkBox" indexed="true"/> <bean:write name="sendData" property="user_id" /> <html:hidden name="sendData" property="user_id" indexed="true"/> </nest:iterate> の様になっています。 一覧表示されたデータ内のチェックボックスをチェックしたものだけを次画面で取得したいと考えていますが、次画面のACTIONにて request.getAttribute("sendMail"); を行ってもNullが返ってきてしまいます。 Enumerationを使うことも考えたんですが、全てのHidden項目が返ってきてしまうのでデータの判別が出来ません。特に明細が複数行あるときには困難です。 こういったデータの引継ぎはどのように行えばよいのでしょうか? どうぞご教授下さいますよう、お願い申し上げます。

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
noname#155524
noname#155524
回答No.1

Sessionを使うのが一般的でしょう。

hogehoge2011
質問者

お礼

お返事遅くなり大変申し訳ございません。 おっしゃるとおりsessionが普通のようですね。 sessionを使って簡単に出来ました。 有難う御座いました。

関連するQ&A

  • Strutsの質問

    今回質問させて頂きたいのは、iterateを使用してたくさんcheckboxを作成し、そのchexboxにチェックされているものをフォームにあるボタンを押した時に、アクション側でそのチェックされている情報を取得したいことです。 現在私が作成しているコードは以下の通りです。 <logic:iterate property="InfoList" IndexId="index" type="jp.co.checkInfo"> <html:checkbox property="targetFlg" indexed="true" value="true" /> </logic/iterate> infoListはチェックボックスのプロパティ(targetFlg)をもつArrayList型(本当は他の情報ももっていてフォームでそれを使用するのですが、今は省略しています)で、typeはプロパティの場所を示しています。 このコードはmultiboxを使用する方法ではうまくいったのですが、checkboxのやり方がうまくいかないのです。 このコードにおいて特にiterate中の「IndexId="index"」やcheckboxの「indexed="true" value="true"」はこだわりはありませんが、他のものは使用して実行させたいのです。 ちなみに現状で実行すると、チェックされている個所がnullpointerでエラー(java.lang.NullPointerException: No indexed value for InfoList[選択している個所])として報告されます。 質問の内容がわかりにくいかもしれません。 その時はご指摘ください。 では、回答よろしくお願いします。

  • strutsで2次元配列をやりとりする方法。

    こんにちは。質問です! 現在、STRUTS+Javaを使ってプログラミングしているのですが、 jspにて<logic:iterate>でループさせ 2次元配列をhidden要素に持たせるまでにはいたったのですが、 その際に、 <html:hidden name="aaa" property="str[0]" indexed="true" /> <html:hidden name="aaa" property="str[1]" indexed="true" /> 以後続く・・・ で表示すると、HTML表示で、 <INPUT type="hidden" name="aaa[0].str[0]" value="あああ"/> <INPUT type="hidden" name="aaa[0].str[1]" value="いいい"/> 以後続く・・・ となってしまい、サーブレットに送る際に、name属性に配列のindexが 付加されているため、strに値が入ってきません・・・ 2次元配列をjspとサーブレットでやりとりする方法を教えてください。 strとaaaの型は共にjava.util.Listです。 ご回答、よろしくお願い致しますm(_ _)m

  • checkboxのvalue値を動的にしたい

    strutsタグのcheckboxのvalue値を動的に変更したいのですがうまく出来ません。 iterateでループし、チェックボックスが複数個(状況によって個数が変化する)できます。 このときvalue値を動的にして、submitしたときにどこのチェックボックスがチェックされたかを知りたい為に動的にしたいと考えています。 見当違いなやり方かもしれません。 どうぞ、ご教授下さい。宜しくお願いいたします <nest:iterate id="selectdata" name="selectAll" indexId="idx"> <tr> <td> <html:checkbox name="selectdata" property="checkBox" value=" ここの値を動的にしたい " /> </td> <td> <bean:write name="selectdata" property="user_id" /> </td> </tr> </nest:iterate> できればbean:writeのuser_idを入れることが出来るのならそれが一番良いのですが・・・ strutsタグのネストは出来ないのでしょうか?

    • ベストアンサー
    • Java
  • 【struts】 ActionFormで別のActionFormの配列を定義時

    皆様お疲れ様です。 現在strutsのコーディングをしているのですが躓いている箇所がございましてお力をお借りしたいと思い、質問させていただきます。 ActionForm_Aの中にActionForm_Bの配列型を宣言しています。 //その他変数色々あってその下 private ActionForm_B[] af_b; getter/setterとしては public ActionForm_B[] getActionForm_B() { return af_b; } public void setActionForm_B(final ActionForm_B[] setAfb) { this.af_b = setAfb; } です。jspで表示するのは出来ますが、取得する際に 「javax.servlet.ServletException:BeanUtils.populate」 が表示されてActionForm_Bの配列型が取得出来ません。 indexedもやっていますし、IterateのindexIdも指定しています。 <logic:iterate id ="af_b" name="af_a" property="af_b" scope="request" indexId="index"> <html:hidden name="af_b" property="name1" indexed="true"/> <html:hidden name="af_b" property="name2" indexed="true"/> </logic:iterate> 表示されているhidden部のhtmlは <input type="hidden" name="af_b[0].name1" value="鬼瓦権座武朗"> となっています。 これを表示している画面からsubmitしますと javax.servlet.ServletException: BeanUtils.populate と表示され落ちてしまいます。 これらの情報からなにか気付いた事、ご指摘等がありましたら是非ご意見を頂きたいと思います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Strutsのindexedについてです

    <html:form action="syuu.do" method="post"> <logic:notEmpty name="page3form" property="csvkaku"> <logic:iterate id="kadai9ken" name="page3form" property="csvkaku"> <html:submit property="dispatch1" indexed="true" >修正</html:submit><br><html:submit property="dispatch2" indexed="true">削除</html:submit> </logic:iterate> </logic:notEmpty> このソースで削除ボタンを押すと削除処理Beanに値を保持遷移し(sakujo.java) 修正ボタンを押すと修正画面に値をBeanに保持し遷移する(senni.jsp) に各遷移していくシステムなのですが なぜか、画面表示時に修正ボタン削除ボタンどちらを押しても削除処理をしてしまうのです peropertyは、コンフィグのほうのparameterでしっかり遷移先は書いてあります。 どうしてでしょうか?

  • <logic:iterate>のデータ表示に関して

    <logic:iterate>を使ってデータの表示を行っています。 データは2つあり、1つは、コードで、もう1つは名称です。 その2つのデータをselectのoptionとして表示したいのですが、 下記ソースにするとoptionのvalueの値がうまく入ってくれず、文字列(<bean:write~)になってしまいます。 うまくデータをいれるにはどうすればよいのでしょうか?? <html:select property="name"> <logic:iterate id="list" name="nameList"> <html:option value="<bean:write name='list' property='code' />"><bean:write name="list" property="name" /></html:option> </logic:iterate> </html:select>

  • struts の iterateでのテーブル表示

    Map型のデータを、iterateを使って表(テーブル)表示を行っているものです。 Map型のデータには、23個のデータが入っています。 このデータを5×5の表に順番に入れて表示させたいのです。現在は1行に同じデータが5つ表示されています。 5×5の表にする方法がいまいちわかりません。 知っている方、宜しくお願いします。 今書いているソースの一部です。 <table border="1"> <logic:iterate id="data" indexId="ctr" name="list"> <tr> <td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> td><bean:write name="data" property="name" /></td> </tr> </logic:iterate> </table>

  • strutsでArrayListの中の配列の表示の仕方。

    タイトルどおりなんですが。よくわかりません。例えば以下のようです。numberに紐づいた複数のデータが配列に入っています。 public static Bean setBean (int number, String[] strArray){ bean.setNumber(number); bean.setArray(strArray); return bean; } たいぶ、はしょってますがこんな感じでbeanにintのnumberとStringの配列をsetして、受け取り側でそのbeanをArrayList(array)にaddしています。それをjspで表示したいのです。jspは下のようです。 <logic:iterate name="form" property="array" id="list" > <bean:write name="list" property="number"> ここにstrArrayを表示したい。 </logic:iterate>  といった具合です。どお書けばいいんでしょうか?ご教授お願いします。

    • ベストアンサー
    • Java
  • Struts 1 で、複数件のフィールドを更新する方法を教えてください。

    <head> <title>登録画面</title> </head> <body> <html:form action="/RegisterData"> ヘッダ:<html:text property="strHeader" /><br> <table border="0"> <logic:iterate id="objRecord" name="BIKO_FORM" property="objBikoList" indexId="intIndex"> <tr> <td>項目<%=(intIndex+1)%></td> <td><html:text name="objRecord" property="strBiko" indexed="true"/></td> </tr> </logic:iterate> <tr> <td colspan="2"><html:submit value="記録する" /></td> </tr> </table> </html:form> </body> このような JSP で、html:text に入力された値を再表示するプログラムを作ろうとしています。 表示は、 <head> <title>登録成功画面</title> </head> <body> <bean:write name="BIKO_FORM" property="strHeader" /> <table border="0"> <logic:iterate id="objRecord" name="BIKO_FORM" property="objBikoList" indexId="intIndex"> <tr> <td>項目<%=(intIndex+1)%>:<bean:write name="objRecord" property="strBiko" /></td> </tr> </logic:iterate> </table> </body> このような感じです。 ActionForm のプロパティは、 private String strHeader; private List<BikoFormDetail> objBikoList; です。 特にセッションに再登録したり、値を変更したりはしないのですが、うまく動作しないのです。iterater で表示した、html:text への画面からの入力値を参照することは、無理なのでしょうか?

    • ベストアンサー
    • Java
  • Strutsタグライブラリーの<html:checkbox>を使用しているときのバックカラーの変え方

    対象のチェックボックスをONにするとバックカラーを白から何か他の色へ変更し、また、逆にOFFにするとバックからを白にもどしたいのですが、方法がわかりません。 どなたか教えてください。 チェックボックスはStrutsのタグライブラリーを使用しています。onClickを宣言使用とすると起こられてしまいます。 <logic:iterate id="chargeSubjectInfo" name="KDSC_L200" property="chargeSubjectInfo" indexId="idx1" type="jp.co.kdl.kse.page.KSEInfoDyna"> <kbean:define id="checkboxInfo" name="KDSC_L200" property="checkboxInfo" index="<%=String.valueOf(idx1)%>" type="jp.co.kdl.kse.page.KSEInfoDyna"/> <td width="13%" class="pt12" height="42" BGCOLOR=""> <html:checkbox name="checkboxInfo" property="report" value="1" indexed="true" /> </td> </logic:iterate> 大文字で書いたBGCOLORの後にjavaScriptを記述したいのですが、わかりません。どなたか教えてください。

専門家に質問してみよう