<s:iterator>リストの値を取得する方法

このQ&Aのポイント
  • <s:iterator>を使用して、リストの値を取得する方法を調べています。具体的には、Struts2の場合、jsp内の<s:iterator>タグで表示されるリストの値をJavaで取得したいです。
  • 現在、指定した条件で検索を行い、jspに表示された結果を一部のテキストフィールドで<s:iterator>のリストとして表示しています。このリストの値を変更して更新ボタンを押すと、Javaのロジックを使用してデータベースを更新したいと考えています。
  • しかし、具体的な方法がわからず、検索しても情報が見つかりませんでした。どのようにすれば<s:iterator>のリストの値をJavaで取得できるのか教えてください。
回答を見る
  • ベストアンサー

<s:iterator>の値をリストで取得したい

Struts2です。 リストの取得の仕方で困っています。 特定の条件で検索をかけ、jspに表示された結果を一部textfieldで<s:iterator>のリスト表示し、その中身を変更して更新ボタンを押すと、DBのデータを更新する、という流れです。 jspは以下のようになっています。(一部抜粋) <table border="1"> <s:iterator status="st" value="projectList"> <tr> <td><s:checkbox id="isChecked" name="isChecked" /></td> <td><s:property value="projno"/></td> <td><s:textfield id="projname" name="projname" maxlength="24" size="52" /></td> <td><s:select id="deptno" name="deptno" list="departmentList" value="%{deptno}" listKey="deptno" listValue="deptno" /></td> <td><s:textfield id="respemp" name="respemp" maxlength="6" size="12" /></td> <td><s:textfield id="prstaff" name="prstaff" maxlength="6" size="12" /></td> <td><s:textfield id="prstdate" name="prstdate" maxlength="8" size="12" /></td> <td><s:textfield id="prendate" name="prendate" maxlength="8" size="12" /></td> <td><s:textfield id="majproj" name="majproj" maxlength="6" size="12" /></td> </tr> </s:iterator> </table> <s:property value="listSize"/>件 <s:form > <table> <tr> <td><s:textfield label="プロジェクトNo" id="projno" name="projno" size="8" maxlength="6" /></td> </tr> </table> <table> <tr> <s:submit action="search103R" value="一覧検索" onclick="return search_fnc()" /> <s:submit action="modify103R" value="一覧更新" onclick="return modify_fnc()" /> <s:submit action="jumpStruts2" method="jump103R3" value="登録画面" /> <s:property value="replyMsg" /> <s:hidden value="%{projno}" /> </tr> <s:actionerror /> </table> </s:form> javaのロジックは、以下のようになっています。引数に入れられた項目で更新する、という処理です。 // 更新処理 public void modify(String projno, String projname, String deptno, String respemp, String prstaff, String prstdate, String prendate, String majproj) throws SQLException, IOException { // SQLプロパティファイル読み込み sqlConf = DevLearningUtils.loadProperties("sql"); // SQL文     UPDATE PROJECT SET PROJNAME = ?, DEPTNO = ?, RESPEMP = ?, PRSTAFF = ?, PRSTDATE = ?, PRENDATE = ?, MAJPROJ = ? WHERE PROJNO = ? // 更新のSQL文を読み込む statement = conn.prepareStatement(sqlConf.getProperty("ProjectModify")); // 更新項目をSQL文にセット statement.setString(1, projname); statement.setString(2, deptno); statement.setString(3, respemp); // プロジェクト工数が空なら0を入れる if (prstaff.length() == 0) { statement.setString(4, "0"); } else { statement.setString(4, prstaff); } statement.setString(5, FormatUtils.addHyphenToDate(prstdate)); statement.setString(6, FormatUtils.addHyphenToDate(prendate)); statement.setString(7, majproj); statement.setString(8, projno); statement.executeUpdate(); } 色々と調べてみたのですが、iteratorの内容をリストとしてjavaで取得する、という方法がわかりませんでした。ご教示お願いします。

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

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

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

nameが projectList[0].projname といった具合になるように生成してあげれば、 projectListの0番目の要素のprojnameに値をセットしてくれます。 具体的には <s:iterator status="st" value="projectList"> <s:textfield name="projectList[%{#st.index}].projname" value="%{projname}" /> とします。

mifu223
質問者

お礼

satomi3951様 ご回答ありがとうございます。 なるほど、そのようにすればセットしてくれるわけですね! 早速試してみます!

その他の回答 (1)

回答No.2

こんにちは。 イマイチよくわからんが・・・。 だって、「modify」メソッドの引数は配列じゃないけど? まぁ、それは置いておいて・・・、 HttpServletRequest#getParameterValues() じゃなくて?

mifu223
質問者

お礼

taka451213様 ご解答ありがとうございます。 説明不足で申し訳ございません。実行するメソッドがまた他にありましてmodifyメソッドはあくまで引数に与えられた情報で更新する、という処理のみにしております。

関連するQ&A

  • struts2のiteratorについて

    sturuts2の画面表示値の取得について教えてください。 Action側でmap<String,List>で保持している変数を 画面上に表示することはできたのですが、 textfieldやラジオボタン、チェックボタンなどで入力された値を Action側で取得したい場合、どのような形でコーディングすれば取得できます? 例)以下の例ではAction側で取得できませんでした。。。 <s:iterator value="hogeMap" status="map"> <s:iterator value="hogeList" status="list"> <s:textfield name=hogeMap[key].hogeList[%(#list.index)].hogehoge value=""> </s:iterator> </s:iterator>

  • ラジオボタン選択でtextfieldをアクティブにするには?

    ■下記サンプルソースのラジオボタン「はい」を選択するとtextfieldがアクティブになるJavaScriptがわからず困っております。教えて頂けないでしょうか。 (ページ開いた際は「いいえ checked」でtextfieldはグレーで入力無効) 可能であればシンプルなソースで「最新のWinIE、MacSafari」に対応していると非常に助かります。先輩方よろしくお願いします。 <form name="form1" method="post" action=""> <table> <tr> <td>■「はい」を選択すると、textfield(カテゴリー1~4)がアクティブになる</td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">はい  <input name="radiobutton" type="radio" value="radiobutton" checked>いいえ </td> </tr> <tr> <td> カテゴリー1<input name="textfield" type="text" size="30" maxlength="30"> <br> カテゴリー2 <input name="textfield22" type="text" size="30" maxlength="30"> <br> カテゴリー3 <input name="textfield32" type="text" size="30" maxlength="30"> <br> カテゴリー4 <input name="textfield42" type="text" size="30" maxlength="30"> </td> </tr> </table> </form>

  • 一覧から選択した行の行番号を取得について

    はじめまして。 一覧を表示させて一覧の先頭の選択ボタンを押したした行の行番号の取得し、その行にシステム日付を表示させたいのですが、うまくいきません。 現在は、btn_selectにalertを入れて選択した行の番号が取得できたかどうか確認したところ、取得できず%{#stat.index}が出力されてしまいます。 どのようにすればボタンを押した行の行番号の取得及びその行のある項目にシステム日付を表示させることができますか?。 宜しくお願いします。 <%@ page contentType="text/html; charset=UTF-8" %> <%@ page pageEncoding="Windows-31J" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@taglib prefix="original" uri="/original-tags" %> <%@taglib prefix="originalLY" uri="/original-LY-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <%@ include file="html-head.jsp" %> <script type="text/javascript"> function btn_select(indx) { alert (indx); } </script> </head> <body> <%@ include file="HeaderTitle.jsp" %> <s:form> <table class="table_line" > <tr> <th rowspan=2 class="form_title_list" >選択</th> <th rowspan=2 class="form_title_list" >A</th> <th rowspan=2 class="form_title_list" >B</th> <th rowspan=2 class="form_title_list" >C</th> <th colspan=2 class="form_title_list" >D</th> </tr> <s:iterator value="shinchokuList" status="stat"> <tr> <s:if test="%{#stat.index % 2 == 0}"> <td class="table_list1"><input type="button" value="選択" name="button" onclick="btn_select(%{#stat.index});"/></td> <td class="table_list1" ><s:textfield name="List[%{#stat.index}].A" size="10" maxlength="10" readonly="true" /></td> <td class="table_list1" ><s:textfield name="sist[%{#stat.index}].B" size="63" maxlength="63" readonly="true" /></td> <td class="table_list1" ><s:textfield name="List[%{#stat.index}].C" size="5" maxlength="5" readonly="true" /></td> <td class="table_list1" ><s:textfield name="List[%{#stat.index}].D" size="10" maxlength="10" readonly="true" /></td> <td class="table_list1" ><s:textfield name="List[%{#stat.index}].E" size="10" maxlength="10" readonly="false" cssStyle="%{eErr}"/></td> </s:if> </s:else> </s:iterator> </table> </td> </tr> </table> </s:form> </body> <html>

  • 値の取得

    先日と同じ問題を出してしまい、申し訳ございません。 iの値を取得したいですが、どうしてもservlet側を取得が出来ないです。 教えてください。 <%@page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.util.*" %> <%@ page import="blog.*" %> <html> <body> <script type="text/javascript"> <!-- function check(){ if(window.confirm('本当に削除してよろしいでしょうか?')){ // 確認ダイアログを表示 var element = document.getElementById("i") request.setAttribute("id", element);// return true; // 「OK」時は送信を実行 } else{ // 「キャンセル」時の処理 window.alert('キャンセルされました'); // 警告ダイアログを表示 return false; // 送信を中止 } } //--> </script> <center> <table> <form action="SeachServlet" method="POST"> <tr> <td>名前:<input type="text" name="name" size="40" value="<%if(request.getAttribute("name")!=null){%> <%=request.getAttribute("name")%><%}%>"></td></tr> <tr><td>日付: <select name="year"> <option><%if(request.getAttribute("year")!=null){%> <%=request.getAttribute("year")%> <%}%></option> <%Calendar cl=Calendar.getInstance(); int year = cl.get(Calendar.YEAR); for(int i=year-7; i<=year+3;i++){ %> <option value="<%=i %>"> <%=i %></option> <%} %> </select>年 <select name="month"> <option><%if(request.getAttribute("month")!=null){%> <%=request.getAttribute("month")%> <%}%></option> <% for(int i=1; i<=12;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>月 <select name="day"> <option><%if(request.getAttribute("day")!=null){%> <%=request.getAttribute("day")%> <%}%></option> <% for(int i=1; i<=31;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>日</td> </tr> <tr><td><input type="button" value=" 印刷 "></td> <td><input type="submit" name="seach" value=" 検索 "></td> </form> </tr> </table> <hr> <FORM> <div><input type="button" value=" 戻る " onClick="history.back()"></div> </FORM> <form action="SeachServlet" method="POST"> <% List<Loginbeans> list = (List<Loginbeans>)request.getAttribute("productlist"); if(list.isEmpty()){ out.print("該当のデータはありません。"); }else{ %> <table border="1"> <tr><th>ユーザID</th><th>名前</th><th>日付</th></tr> <% int i=0; for (Loginbeans bn : list) { i++;//この値を取得したいです %> <tr><td><%=bn.getUser_id()%><input name="use_id" type="hidden" value="<%=bn.getUser_id() %>"/></td> <td><%=bn.getName()%><input name="name" type="hidden" value="<%=bn.getName()%>"/></td> <td><%=bn.getTotal()%><input name="total" type="hidden" value="<%=bn.getTotal()%>"/></td> <td><input id="<%=i%>" type="submit" value=" 削除 " name="delete" onClick="return check()"></td> </tr> <%}}%> <input type="hidden" name ="number" value ="element"> </form> </table> </center> </body> </html> selvet側で String id = (String)request.getAttribute("id"); String ida = request.getParameter("number"); 取得できないですが・・

  • ラジオボタンでの表示の切替方法

    2つのラジオボタンの切替によって、表示の切替を行いたいです。 例えば、Aを選択すると(1)の入力フォームが表示され、Bを選択すると(2)が表示したいです。初期表示はAが選択された時と同じ内容となります。 <table align="center" border="0" cellpadding="0" cellspacing="0"> <tr><td><form name="Quick1"> <tr><td>選択</td> <td> <input type="radio" name="A" value="1" checked>A  <input type="radio" name="B" value="2">B  </td></tr> <tr> <td>(1)</td> <td> <input type="text" size="6" maxlength="5" name="text1" value="">- <input type="text" size="6" maxlength="5" name="text2" value="">- <input type="text" size="6" maxlength="5" name="text3" value=""> </td></tr> <tr> <td>(2)</td> <td> <input type="text" name="text7" size="43" value=""> </td></tr> </table></form></td></tr></table> すみませんが、よろしくお願い致します。

  • Struts2のifタグについて

    いつもお世話になっております。 現在Struts2の学習を行っているのですが、 iteratorでlistの中のmapの値を取得しているのですが、 データを表示させるか判定に使用するifのタグの条件に propertyタグで取得した値を使用としたら、 正しく判定されませんでした。 どうしたらifタグのtest属性内でpropertyタグを使用できるでしょうか? <table> <s:iterator id="categoryList" value="categoryList" status="rowstatus" > <s:property value="CATEGORYNAME"/> <table border="3"> <s:iterator id="categoryTopicList" value="categoryTopicList" status="rowstatus" > <s:if test='<s:property value="TCID"/> == <s:property value="CATEGORYID"/>'> <tr> <td><s:property value="CATEGORYID" /></td> <td><s:property value="TCID" /></td> <td><s:property value="TOPICNAME" /></td> <td><s:property value="PROCEDURE"/></td> </tr> </s:if> </s:iterator> </table> </s:iterator> というようにjspは記述しています。 ifタグを使わずに表示させると値は取得されていたのでDBエラー等ではありませんでした。 使用しているstruts2のバージョンは2.0.14です。 ifタグにpropertyタグの値を条件として記述する方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • VBAでWebページに入力&ボタンクリック

    URLがhttp://xxx.com/のページで次のようなフォームのときExcelで自動入力クリックするマクロを作りたいです。 <input type="hidden" name="room" value="aaaaa"/> <a name="regist" id="regist">総登録数</a> <table width="402" border="1"> <tr> <th align="center" colspan="2"><div align="left"><big>登録ページ</big></div></th> </tr> <tr> <td colspan="2">&nbsp;&nbsp;&nbsp;name <input type="text" size="20" name="name" value="" maxlength="20"> &nbsp;&nbsp;&nbsp;Email <input type="text" size="20" name="email" value=""> &nbsp;&nbsp;</td> </tr> <tr> <td align="center">pass</td> <td><input type="text" size="20" name="pw" maxlength="12" value=""></td> </tr> <tr> <td align="center">category</td> <td><select size="1" name="junle"> <option value="pp" selected="selected">カテゴリ選択</option> <option value="0">その1</option> <option value="1">その2</option> </select></td> </tr> <tr> <td align="center">title</td> <td><input type="text" size="55" name="title" maxlength="25" value=""></td> </tr> <tr> <td align="center">URL</td> <td><input type="text" size="55" name="url"></td> </tr> <tr> <td align="center">intro</td> <td><input type="text" name="comment" size="55" maxlength="50" value=""></td> </tr> <tr align="center"> <td><br></td> <td><input type="submit" name="mode" value="登録"> <input type="reset" value="クリア"></td> </tr> </table> 入力する内容は1行目のA,B,C・・にname,email,pass・・・が順番にそれぞれ入っています。

  • formのtextフィールドが認識されない

    下記のようなフォームに対し、JavaScriptで処理を行おうとしています。 <form name="dateForm" method="post" action=""> <table> <tr><td>0</td> <td><input type='text' name='date[]' maxlength='8' size=12 value='20111001'></td> <td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr> <tr><td>1</td> <td><input type='text' name='date[]' maxlength='8' size=12 value='20111002'></td> <td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr> <tr><td>2</td> <td><input type='text' name='date[]' maxlength='8' size=12 value='20111003'></td> <td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr> </table> <input type='text' name='date_0' maxlength='8' size=12 value='20111000'><br><br> <input type="submit" name="button" value="Check" onClick="send_self();"> <input type="submit" name="button" value="Enter" onClick="set_action();"> </form> Checkボタン押下で上記の関数を呼び出し、テキストフィールドdate[0]の値を表示すると、(1)では「20111001」と正しい値が表示されますが、(2)では下記のエラーが出てしまいます。 「プロパティ '0' の値を取得できません: オブジェクトは Null または未定義です。」 また、 alert(document.dateForm.elements[0]); // … (3) alert(document.dateForm.date); // … (4) とすると、(3)では[object]、(4)では[undefined]と表示されます。 alert(document.dateForm.date_0.value); はvalueも正しく表示されobjectとしても正しく認識されるので、配列へのアクセスに問題があるように思うのですが…。 問題点と解決法をご存知の方がいらっしゃいましたら、どうぞよろしくお願い致します。m(_ _;)m

  • 動的なtableの値を取得したい

    いつもお世話になります。 見よう見まねでやっている超初心者です。 下記の様なテーブル(phpで読み込んでいますので実際は動的です。) の回答ボタンをクリックすると テーブル下の<INPUT type="text" name="kotae">に ボタンをクリックされた行のb列の値を入れたいと思っています。 function kaito()をどのように書いたら取得できるか悩んでいます。 初心者なもので具体的な回答でしたら助かります。 ご教授の程どうぞよろしくお願い致します。 <html> <head> <meta content="text/html; charset=utf-8" /> <script> </script> </head> <body> <table width="100" border="1"> <tr> <th width="30" scope="col">a</th> <th width="30" scope="col">b</th> <th width="40" scope="col">c</th> </tr> <tr> <td>1</td> <td>2</td> <td><input type="button" value="回答" onclick="kaito()"/></td> </tr> <tr> <td>5</td><td>3</td> <td><input type="button" value="回答" onclick="kaito()"/></td> </tr> <tr> <td>5</td> <td>4</td> <td><input type="button" value="回答" onclick="kaito()"/></td> </tr> <tr> <td>5</td> <td>5</td> <td><input type="button" value="回答" onclick="kaito()"/></td> </tr> </table> <INPUT type="text" name="kotae" size="12" > </body> </html>

  • 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