1

"edit"との複数のボタンで構成される1つのHTMLフォームを作成しまし"delete"た。forそれらの多くを別のページで表示するために、それらをループに入れました。

次のJSPページで、送信ボタンまたはクリックしたボタンの名前フィールドを取得するにはどうすればよいですか。または、これに代わるものを提供できますか?

<% for (int t = 1; t < 10; t++) { %>
    <label>
        <input type="submit" name="<%=t %>" value="edit" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
        <input type="submit" name="<%=t %>" value="delete" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
    </label>
<% } %>

ページソースを表示するname="1"と、編集name="1"用と削除用が表示されます10

サーバー側の名前フィールドの値を取得したい。request.getParameter()また、ユーザーがどのボタンを押すかわからないため、応募できません。

4

4 に答える 4

0

クリックされたボタンの値を格納する非表示のタグを使用します

<input type="hidden" name="hidBt" />

この非表示のタグを値の外側に配置します。

<label>
    <input type="submit" name="<%=t %>" value="edit" onclick="this.form.hidBt.value=this.value;this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
    <input type="submit" name="<%=t %>" value="delete" onclick="this.form.hidBt.value=this.value;this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
</label>    

その後、隠れた変数を呼び出します

String butValue = request.getParameter("hidBt");
于 2013-01-05T09:47:13.450 に答える
0

onclick でフォーム アクション URL を既に変更しているため (これは非常に悪い方法ですが、それはさておき)、行識別子も追加しないのはなぜですか?

<input type="submit" name="<%=t %>" value="edit" onclick="this.form.action='df1.jsp?flag=1&act=1&edit=<%=t%>';this.form.submit();" />
<input type="submit" name="<%=t %>" value="delete" onclick="this.form.action='df1.jsp?flag=1&act=1&delete=<%=t%>';this.form.submit();" />

このようにして、次のことができます。

String edit = request.getParameter("edit");

if (edit != null) {
    // Edit button of row "edit" was invoked. Do your job here.
}

String delete = request.getParameter("delete");

if (delete != null) {
    // Delete button of row "delete" was invoked. Do your job here.
}

それ以外の場合は、ボタン名の前に固定識別子を付ける必要があります。

<input type="submit" name="edit_<%=t %>" value="edit" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />
<input type="submit" name="delete_<%=t %>" value="delete" onclick="this.form.action='df1.jsp?flag=1&act=1';this.form.submit();" />

あなたができるように:

for (int t = 1; t < 10; t++) {
    if (request.getParameter("edit_" + t) != null) {
        // Edit button on index "t" was invoked. Do your job here.
        break;
    }

    if (request.getParameter("delete_" + t) != null) {
        // Delete button on index "t" was invoked. Do your job here.
        break;
    }
}

具体的な問題とは関係ありませんが、スクリプトレット を使用してこのように JSP を記述すること<% %>は、10 年前から古いやり方であり、不適切な方法と見なされてきました。JSP ファイルで Java コードを回避する方法も参照してください。

于 2013-01-05T14:32:20.703 に答える
0

これにはいくつかのアプローチがあります。

提出されたすべてのフィールドを見てください

  • 送信されたすべてのフィールドを取得します (この質問に従って)
  • それらをループする
  • 送信ボタンの命名規則に一致する名前が見つかるまで、名前をパターン一致させます

可能なすべての送信ボタン名を探します

  • あなたが持つことができるすべての送信ボタン名のリストを生成します
  • そのリストをループして、名前が見つかるまで各名前のパラメーターを取得しようとします

名前が数値であることを考えると、可能性の数はおそらく有限ではありません。したがって、最初のアプローチの方がおそらく優れています。

于 2013-01-05T14:34:10.600 に答える
-1
you can get button using 

String buttonName =  request.getParameter("button-name") 

次に、値を隠し値として次のページに渡す必要があります。

于 2013-01-05T09:34:01.593 に答える