1

jspで次のように顧客リストを反復することにより、顧客データを入力します。

<form action="CustomerUpdate" method="post">
<c:forEach var="listItems" items="${customers}">          
   <label> First Name: </label><c:out value="${listItems.fname}" />  
   <label> Last Name: </label><c:out value="${listItems.lname}" />
   <label> Address: </label><c:out value="${listItems.address}" /> &nbsp;
   <input type="submit" value="Edit" name="edit">
   <input type="submit" value="Delete" name="delete"><br />     
</c:forEach> 
</form>

ここで、アクションで各レコードを編集または削除します。どの顧客を編集/削除する必要があるかを追跡します。したがって、サーブレットでは、varlistItemsにあるcustomerオブジェクトにアクセスするにはどうすればよいですか。それが不可能な場合は、値を持つ非表示の入力変数を用意し、サーブレットでgetParameterを使用してそれらにアクセスする必要がありますか?

4

2 に答える 2

3

これは、それを行う方法の簡単な例にすぎません。次のようにコードを変更します。

<c:forEach var="listItems" items="${customers}">          
  <form action="CustomerUpdate" method="post">
    <input type="hidden" value="${listItems.id}" name="id">
    <label> First Name: </label><c:out value="${listItems.fname}" />  
    <label> Last Name: </label><c:out value="${listItems.lname}" />
    <label> Address: </label><c:out value="${listItems.address}" /> &nbsp;
    <input type="submit" value="Edit" name="action">
    <input type="submit" value="Delete" name="action"><br />     
  </form>
</c:forEach> 

アップデート

すべての行にフォーム要素を作成し、すべての行に。を使用して非表示のフィールドを配置しidます。したがって、そのボタンを押すと、リクエストで行を検出できる値を受け取ります。この上:

String id = request.getParameter("id");
String action = request.getParameter("action");

idこれで、とactionタイプ(編集または削除)がわかりました。

代替ソリューション

フォームを使用して送信してアクションを呼び出すのではなく、直接リンクを使用してください。

<c:forEach var="listItems" items="${customers}">          
  <input type="hidden" value="" name="id">
  <label> First Name: </label><c:out value="${listItems.fname}" />  
  <label> Last Name: </label><c:out value="${listItems.lname}" />
  <label> Address: </label><c:out value="${listItems.address}" /> &nbsp;
  <button onclick="window.location.href='CustomerUpdate?action=edit&id=${listItems.id}'">Edit</button>
  <button onclick="window.location.href='CustomerUpdate?action=delete&id=${listItems.id}'">Delete</button>
</c:forEach> 
于 2012-04-14T12:43:43.067 に答える
0

サーブレットで、どのボタンがクリックされたかを確認します。

if (request.getParameter("action") != null) //if action is not null
        {
            String action = request.getParameter("action");
String id = request.getParameter("id");

            if (action.equals("edit")) //edit button clicked
            {
               //do your work here
            }
            else if (action.equals("delete")) //delete button clicked
            {
                //your work here
            }
}
于 2012-04-14T16:39:09.360 に答える