2011-10-29 32 views
2

我有一個jsp,向我展示了一個來自基地的學生列表。對於每個學生我想要2個按鈕 - 編輯和刪除。在編輯上單擊該請求應重定向到我的servlet控制器,並打開一個新的jsp編輯選定的學生的數據。在刪除單擊一個刪除請求選定的學生被髮送到控制器。現在,它看起來像這樣:在JSP中處理多個提交按鈕

<%@page import="socnet2.Student"%> 
<!-- class Student emulates real student --> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>JSP Page</title> 
</head> 
<body> 
<jsp:useBean class="socnet2.DAO" id="dao" scope="request"></jsp:useBean> 
<p><b>List of all students:</b></p> 
<form action="/JSP1/Controler" method="POST"> 

      <jsp:scriptlet> 
     for (Student s : dao.getAllStudents()) { 
      </jsp:scriptlet> 
      <p> <jsp:expression> s.getName() + " " + s.getSurname()</jsp:expression></p> 
      <input type="submit" name="Edit" value="Edit" /> 
      <input type="submit" name="Delete" value ="Delete"/> 
      <jsp:scriptlet> 
     } 
      </jsp:scriptlet> 

    </form> 
</body> 

問題是我無法弄清楚如何給我的學生與按鈕連接的方式,當請求發送到位指示已知被點擊,哪些學生是哪個按鈕被選中。我知道我需要爲每個學生提供一些唯一的ID,但不知道如何創建它...

回答

4

我相信Student已經有某種ID。比方說,它有private String id和適當的getter public String getId()

在這種情況下,您生成提交按鈕的名稱時,只應使用此ID:

 <input type="submit" name="Edit_<%=s.getId()%>" value="Edit" /> 
     <input type="submit" name="Delete_<%=s.getId()%>" value ="Delete"/> 

現在,你可以學生在服務器端進行區分。 另外,您可以爲每個學生創造獨立的形式,給每一個形成其獨特的網址:

<form method="post" url="http://myhost/myapp/students/<%s.getId()%>">

+0

感謝idea.The事情是我不具有唯一的ID爲一個類中的學生,因爲class Student只是一些封裝,而base只存在於每個用戶具有不同角色的大表USERS中。所以我用簡單的整數計數器來添加。我按照你的建議更改了上面的代碼,並嘗試了這樣的 int counter = 0; ArrayList students = dao.getAllStudents(); session.setAttribute(「學生」,學生); (學生s:dao.getAllStudents()){ 不要使請求翻倍。但是現在不好 – ferbolg

+0

我的意思是對數據庫的請求。但是現在netbeans說沒有終止 – ferbolg