- PR -

Strutsでボタンを使わずに、リンクでフォームをSubmitする方法

1
投稿者投稿内容
sheer
会議室デビュー日: 2005/09/04
投稿数: 4
投稿日時: 2005-09-04 00:56
初めまして。現在、Strutsを使って開発を行っています。
表記の件で、少し質問があります。

まず、検索を行い、その結果をActionでリクエストに入れています。それを、同じページにiterateで表示させています。
結果の「名前」にリンクを貼り(submitボタンの代わり)、hidden値として、名前、メール、件名を持ち、遷移先のJSPにその値を表示させたいと思ってます。

フォームを送信する際、ボタンは使わないようにしています。(仕様で)
なので、JavaScriptを使って試みています。ソースは以下のような感じです。テスト用に簡単に作ってみました。

<html:html>
<head>
<title>テスト検索画面</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function submit(){
document.forms[1].submit();
}
//-->
</script>
</head>

<body>
<html:form action="/search">
<table border="0">
<tr>
<td>名前</td><td><input text="text" name="name" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="検索"></td>
</tr>
</form>
</html:form>
</table>

<logic:empty name="result">
<hr>
</logic:empty>

<logic:notEmpty name="result">
<hr>
<table border="1" width="515">
<tr>
<td width="164">
<p>名前</p>
</td>
<td width="164">
<p>メール</p>
</td>
<td width="164">
<p>件名</p>
</td>
</tr>

<logic:iterate id="show" name="result" scope="request">

<html:form action="/input">
<input type="hidden" name="name" value="<bean:write name="show" property="name" />"/>
<input type="hidden" name="mail" value="<bean:write name="show" property="mail" />"/>
<input type="hidden" name="title" value="<bean:write name="show" property="title" />"/>
</html:form>

<tr>
<td width="164">
<a href="javascript:submit()"><bean:write name="show" property="name" /></a>
</td>
<td width="164">
<bean:write name="show" property="mail" />
</td>
<td width="164">
<bean:write name="show" property="title" />
</td>
</tr>
</logic:iterate>
</table>
</logic:notEmpty>
</body>
</html:html>

2つ目のフォームを実行したかったので、JavaScriptでforms[1]としたのですが、これではダメだと気づきました。結果が1件の場合は問題ないですが、結果が複数件の場合、iterateでフォームが複数作成される事になり、フォームの数が変わるからです。

例えば、2件結果が返ると、1ページ内のフォーム数は3となります。しかし、このJavaScriptの書き方だと、3つ目のフォームをSubmitしても、必ず2つ目のフォームのhidden値が遷移先のJSPに表示されます(当たり前ですが)

そこで、このforms[]の値を動的に返る事ができるのか、それとも何か他の方法があるのか、知恵をお貸し下さい。
taka
会議室デビュー日: 2005/05/03
投稿数: 14
投稿日時: 2005-09-04 02:53
logic:iterateのindexと、引数を取るjavascriptのsubmitメソッド作ればできそうに見えますけど。
sheer
会議室デビュー日: 2005/09/04
投稿数: 4
投稿日時: 2005-09-04 12:33
アドバイスどおりやってみたら、うまく行きました!
良きアドバイス、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)