dポイントプレゼントキャンペーン実施中!

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で取得する、という方法がわかりませんでした。ご教示お願いします。

A 回答 (2件)

nameが


projectList[0].projname
といった具合になるように生成してあげれば、
projectListの0番目の要素のprojnameに値をセットしてくれます。

具体的には
<s:iterator status="st" value="projectList">
<s:textfield name="projectList[%{#st.index}].projname" value="%{projname}" />
とします。
    • good
    • 1
この回答へのお礼

satomi3951様

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

お礼日時:2012/01/25 08:56

こんにちは。



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

taka451213様

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

お礼日時:2012/01/25 08:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!