2012-04-14 40 views
1

通過在jsp中迭代客戶列表來填充客戶數據。訪問servlet中的jstl變量

<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> 

現在在操作中,可以編輯或刪除每個記錄,我想跟蹤哪個客戶需要編輯/刪除。所以在servlet中,我如何訪問var listItems中的customer對象。如果它不可能我需要隱藏輸入變量的值,並使用servlet中的getParameter訪問它們?

回答

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"); 

現在你知道了idaction類型(編輯或刪除)。

替代解決方案

不要使用表格並提交打電話給你的行動,而是用一個直接的聯繫。

<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> 
+0

這裏的問題是編輯按鈕顯示的第一個名字也與編輯。所以我試過。但是,當我使用request.getParameter(「action」)訪問它時,它將返回值作爲Edit,而不是值屬性中的值 – Harshana 2012-04-14 13:50:26

+0

好吧,我用新建議更新了我的答案。但是有很多不同的方法可以做到這一點。 – dash1e 2012-04-14 14:02:50

0
的servlet檢查

被點擊了哪個按鈕爲:

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 
      } 
}