• 締切済み

Struts Listの情報がgetできない。

ここ最近、JAVA STRUTSで開発をすることになり、詳細設計の通り画面を 実装しています。 ある程度、理解してきてはいるのですが、一点実装したのですが、思ったように 動かない部分があり困っています。 ActionFormの内容 private int testID ; private String name ; private List<testBean>testDataList; testBeanの内容 private boolean hogeA; private String hogeB; private String hogeC; 画面(jsp)側はhtml:hidden Listの内容はiteratorを使用しています。 indexed=trueの設定も忘れていません。 初期画面表示時は上記のtestID,name,testDataListにDBからデータを設定しセッションに 渡して画面表示は正常にうまくいってます。 問題は画面からsubmitした時なのですが、testID,testNameはgetできているのですが Listの内容がまったく渡ってこないので困っています。 ソースの持ち出しが出来ないのと、社内では外につなぐことができないので ここまでの情報しか書けませんが、こうやればできるという方法があれば 教えていただければと思います。 補足ですが、 今回のシステムはrequestからgetparamaterを使用するのは禁止となっています。 一応、上記の方法で、リクエスト情報にはListの内容はxxx[index].hogeA・・・のように すれば取得できているので、情報は渡ってきてそうなのですが。

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

みんなの回答

  • aztarosa
  • ベストアンサー率33% (1/3)
回答No.2

DoubleHeadさんの仰る通りやりたい事の情報が若干不明瞭です。 ListにBeanを入れるという事は 複数項目を1セットとしたの可変長項目があるという事でしょうかね? Jsp側からではリストで新しいオブジェクトをnewする事はできないので Listのgetで存在しないindexが呼ばれた時に新しいオブジェクトを生成するクラスを 作ってあげる事が必要です。 参考URLを載せておきます。 見当違いだったらごめんなさい。

参考URL:
http://civic.xrea.jp/2006/11/25/struts-using-list3/
回答No.1

値が渡ってこないということは送り方に問題があると思われるので どうやって送ろうとしてるのか つまり、 <form>の中身を もっと具体的にはListの部分をどう作ってるのか見てみないとわかりません。 困ってあせっているのはわかりますが 落ち着いて論理的に考えてください。 とりあえず、そのjspかhtmlかのformの中の該当する部分を 当たり障りのない程度に抜き出して示してみてはいかがでしょう。

関連するQ&A

  • StrutsでJSPからListを受け取りたい

    JSPに複数のhidden(動的に数が変化)があり、これらの値をformのlist(配列)に詰めたいです。 尚、nameの値は別の処理でjavascriptを使いvalueを変化させるため連番であれば構わないです。です。 ~~~JSP~~~ <input type="hidden" name="str1" value="a"/> <input type="hidden" name="str2" value="b"/> <input type="hidden" name="str3" value="c"/> ~~~~~~~~ 上のJSPから下記のFORMに詰めたい ~~~form~~~ private List strList; public List getStrList(){ return strList; } ~~~~~~~~ 又、こちらで調べたところ下記のようにすればいけるようですが欲しい値は一つのためBeanを使用しなくても実現可能ではないかと思い、質問させていただきました。 よろしくお願い致します。 ~~~JSP~~~ <input type="hidden" name="testArray[0].str" value="a"/> <input type="hidden" name="testArray[1].str" value="b"/> <input type="hidden" name="testArray[2].str" value="c"/> ~~~~~~~ ~~~FORM~~~ private List list; public TestBean getTestA(int iIndex) { while (this.list.size() <= iIndex) { this.list.add(new TestBean ()); } return ( TestBean ) this.list.get(iIndex); } public Object[] getTestArray() { return list.toArray(); } public static class TestBean { private String str = ""; public String getStr() { return str; } public void setStr(String str) { this.str = str; } }

    • ベストアンサー
    • Java
  • StrutsのiterateタグでListに格納されているBeanの要素を表示する方法

    タイトルのように Strutsのiterateタグを使用して、 ArrayListに格納されているBeanの要素を表示しようとしています。 具体的には public class Test { // 実際にはmainではないですが。 public static void main( String[] args ) { TestBean tbean = new TestBean( "あいうえお", "10" ); ListBean lbean = new ListBean(); lbean.setList( tbean ); } } public class TestBean { private String name; private String age; public TestBean( String name, String age ) { this.name = name; this.age = age; } } public class ListBean { private ArrayList list; public ListBean(){ } public void setList( TestBean bean ) { this.list.add( bean ); } public ArrayList getList() { return this.list; } } というような構成で、JSPでiterateタグを利用して、 listに入っているBeanから、更にnameとageを取得して 表示させたいのです。 ご回答お願いします。

  • strutsでlist型の入力を行うには

    strutsでlist型の入力を行いたいのですが、サーバー側で上手く取得できません。 実際には struts-configに <form-bean name="TestForm" type="base.BaseActionForm"> <form-property name="testList" type="java.util.List" /> </form-bean> JSPには <logic:iterate id="testList" type="bean.TestBean" name="TestForm" property="testList" indexId="idx"> <tr> <td> <html:text property="strKamoku" name="testList"/> </td> </tr> </logic:iterate> beanは下記のようです。 public class TestBean implements Serializable, Cloneable { private String strKamoku; public String getStrKamoku() { return strKamoku; } public void setStrKamoku(String strKamoku) { this.strKamoku = strKamoku; } } 上記のように設定し、サーバー上でセットした値をテキストボックスに 入れてlist表示できたのですが、テキストボックスに入れた値を変更し、submitし、サーバー上でlistの中を見てみると、表示した時のままで変更した値が反映されてません。 表示したlistの値を変更する事はできるのでしょうか。 わかりづらい説明ですいませんが、なにかアドバイス宜しくお願いします。

    • ベストアンサー
    • 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
  • struts2 iteratorタグ内でActionFormの値を参照したい

    iteratorタグを使えば、iterator内で「○○.xxx」としなくても「xxx」で 値を参照できますよね。 リスト以外のActionFormの値を参照するにはどのように指定すればよいでしょうか。 初歩的なことですが、WEBで見つけることができなませんでした。よろしくお願いします。 <s:property value="%{title}" /> <s:iterator value="hogeList"> <s:property value="%{name}" /><BR /> <%-- ■ここにActionFormの値を表示したい!■ --%> </s:iterator>

    • ベストアンサー
    • Java
  • Strutsでチェックボックスの値を取得する方法

    明細行のチェックボックスで、選択した状態で画面再表示時にチェックを外した場合、再度画面を表示すると外したはずのチェックが戻ってしまいます。 現象 1.下記「作成したJSP」のチェックボックスを選択し、サーバへ送る。 2.「ViewList」内のチェックボックス「testCheckBox」(boolean型)にtrueが設定される。 ※ViewListはtestActionFormのList型で、javaでもIteratorで1件づつtestActionFormを取得し、「testCheckBox」を確認している 3.上記1と同じHTMLフォームにおいて、今度はチェックボックスの選択を外して、サーバへ送る。 4.チェックを外したにも関わらず、trueの状態になってしまう。 良い対処方法があれば、ご教授をお願いします ※他のホームページで、ActionFormに下記メソッドを記述すると、チェックボックスが正常に戻ると書いてあり、試しましたがダメでした。 画面ActionForm内に、testActionFormのListを作成し、その中にチェックボックスがある場合、適用されないのでしょうか? public void reset(ActionMapping mapping, HttpServletRequest request){ testCheckBox=false; } ☆作成したJSP <%-- 明細行の反復表示 start --%> <logic:iterate name="testActionForm" id="ViewList"property="ViewList" indexId="idx"> <!-- チェックボックス 開始--> <td nowrap > <html:checkbox property="testCheckBox" name="ViewList" indexed="true" index="idx" /> </td> <!-- チェックボックス 終了--> <!-- 入力テキスト 開始--> <td nowrap > <html:text property="testInput" size="50" maxlength="30" name="ViewList" indexed="true" index="idx" /> </td> <!-- 入力テキスト 終了--> <%-- 明細行の反復表示 end --%> </logic:iterate>

    • ベストアンサー
    • Java
  • 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
  • Strutsでの質問

    Strutsでの質問 いつもお世話になっております。 <html:optionsCollection>使った際の実装のさせ方がわからない為、困っております。 birthday.jsp //省略 生年月日 <html:select property="year" > <html:optionsCollection name="UserCheckForm" property="year_map" value="key" label="value" /> </html:select>年 <html:select property="month" > <html:optionsCollection name="UserCheckForm" property="month_map" value="key" label="value" /> </html:select>月 <html:select property="days" > <html:optionsCollection name="UserCheckForm" property="days_map" value="key" label="value" /> </html:select>日<br/><br/> ActionForm、Actionではどのように定義しておけばいいのでしょうか? ActionFormでは //省略 LinkedHashMap<String, String> year_map = new LinkedHashMap<String, String>(); year_map.put("01", "1970"); year_map.put("02", "1971"); year_map.put("03", "1972"); year_map.put("04", "1973"); year_map.put("05", "1974"); year_map.put("06", "1975"); year_map.put("07", "1976"); year_map.put("08", "1977"); LinkedHashMap<String, String> month_map = new LinkedHashMap<String, String>(); month_map.put("01", "01"); month_map.put("02", "02"); month_map.put("03", "03"); LinkedHashMap<String, String> days_map = new LinkedHashMap<String, String>(); days_map.put("01", "01"); days_map.put("02", "02"); days_map.put("03", "03"); でもこれっておかしいですよね・・・。 ActionFormにはsetterとgetterを実装しなければいけないのに。 setterはこんな感じになるんでしょうか。 public void setYear_map(){ year_map.put("key","value"); } でもこれだと動的にキー名と値が入らず、1個分しか出来ないですよね…。 どうしたらいいかわからないのでどなたか教えて頂ければ幸いです。 また結構なサイトみてますが、イマイチわかりません。 参考URLをご提示の場合はどのへんを参考にすればいいか 教えて頂ければと思います。 申し訳ありませんが、宜しくお願い致します。

    • ベストアンサー
    • Java
  • サーブレッドでのローカル変数はスレッドセーフだと聞きましたが、

    サーブレッドでのローカル変数はスレッドセーフだと聞きましたが、 オブジェクト型のローカル変数にもそれは当てはまるのでしょうか。 例えば下記の実行クラスにユーザAとユーザBが同時にアクセスした場合、どうなるのでしょうか。 手順 (1)ユーザAが実行クラスのtestMethodを実行し、TestBean.setNameメソッドで名前をセットする (2)その直後にユーザBがtestMethodを実行し、TestBean.setNameメソッドで名前をセットする (3)ユーザAがセットした名前はユーザBに上書きされてしまうのか? ------------------------------------------------- ○実行クラス public class TestClass{   public String testMethod(){     TestBean testBean = new TestBean();     testBean.setName("テスト太郎");     return testBean;   } } ------------------------------------------------- ○呼び出されるBeanクラス public class TestBean{   private String name = null;     public void setName(String name){     this.name = name;   } } ------------------------------------------------- わかり難い説明で申し訳ないのですが、教えていただけないでしょうか。

    • ベストアンサー
    • Java
  • Strutsでの質問になります。

    Strutsでの質問になります。 いつもお世話になっております。宜しくお願いします。 環境は Struts1.2 eclipse3.4 JavaJDK1.5 JavaJre1.5 tomcat5.5 になります。 下記の部分を教えて頂ければ幸いです。 所々抜粋しております。 <html:form action="/userCheckForm" > <bean:message key="property.Ownership.qualification" />:<br/> <html:multibox property="sikaku" value="基本情報技術者"/>基本情報処理技術者<br/> <html:multibox property="sikaku" value="ソフトウェア開発技術者"/>ソフトウェア開発技術者 <html:multibox property="sikaku" value="その他"/>その他<br/><br/> <br/> ActionFormは抜粋してますが private String[] sikaku;      public String[] getSikaku() { return sikaku; } public void setSikaku(String[] sikaku) { this.sikaku = sikaku; } 関係ある部分はこのようにしています。 ActionはForwardしてるだけで特に何もしておりません。 表示側で <bean:message key="property.Ownership.qualification" />:<br/> <bean:write name="UserCheckForm" property="sikaku" scope="request" /><br/> このようにしておりますが、配列が思うように取ってこれず、チェックされたもののみ 表示したいんですがどのようにしたらいいでしょうか? チェックをいれ表示すると [Ljava.lang.String;@1c98c1b のようになり、配列がObject?のまま表示されてしまい困っております。 お力貸していただければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう