2010-12-17 83 views
0

我必須在其前面顯示一個複選框的用戶列表。我現在想要選擇一些名稱並在數據庫中刪除它。我已經編寫了代碼來顯示用戶。我不知道如何獲取選定的值並將其刪除。請幫助我這裏是我已經嘗試過獲取複選框的選中值並將其發送到servlet

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<%String user=request.getParameter("Users"); %> 
<script type="text/javascript"> 
var chk="dummy"; 
function doSubmit(theClick){ 
     window.open("AddUser.jsp"); 
     return false; 
     } 
function setValue(chVal) 
{ 
    chk=chk+","+chVal; 
    alert(chk); 

}  
function doDelete(theClick){ 
    document.buttons.action = "AddUserServlet?type=delete&name="+chk; 
    alert(chk); 
    document.buttons.submit();   

} 
</script> 
</head> 
<body> 
<center> 

<!-- action="AddUserServlet"--> 

<% 
try{ 
String User[]=user.trim().split(" "); 
for(int i=0;i<User.length;i++){ 
    out.println("<html>"); 
    out.println("<body>"); 
    out.println("<form>"); 
    out.println("<input type='checkbox' value='User[i]' onClick='setValue(this.value)' name='user'>"+User[i]+"</input>"); 
    //out.println("<input type='checkbox' value='User'+i+ name='user1'>"+User[i]+"</br>"+"</form>"); 
    out.println("</form>"); 
    out.println("</body>"); 
    out.println("</html>"); 
    //out.println("<input type='checkbox' value='User'+i+ name='user1'>"+User[i]+"</br>"+"</form>"); 
} 
}catch(Exception e){ 
    e.printStackTrace(); 
} 

%> 

<!-- 
<form method="Post" name="buttons"> 
<input type='checkbox' value='User' onClick="setValue(this.value)" name='user1'></input> 
<input type='checkbox' value='User1' onClick="setValue(this.value)" name='user1'></input> 
<input type='checkbox' value='User2' onClick="setValue(this.value)" name='user1'></input> 
<div id="add"></div> 
</form>--> 

<form method="Post" name="add"> 
<input type="submit" value="ADD" onclick="return doSubmit(this)"> 
<input type="submit" value="MODIFY" onClick="return doSubmit(this)"> 
<input type="submit" value="DELETE" onClick="return doDelete(this)"> 
</form> 
</center> 
</body> 
</html> 

上面的代碼顯示名稱列表以及複選框。但是返回值「user」而不是數據庫中的名字。另外,如果我取消選中某個名稱,則會再次返回用戶。

[*]abc-----> returns dummy,user 
if i uncheck this []user returns dummy,user0,user1 

我需要用戶名列表。

+0

您是否收到錯誤,沒有更改,錯誤的更改?請告訴我們發生了什麼,它會幫助我們確定問題所在。 – 2010-12-17 05:12:52

回答

1

您需要爲每個用戶的每個複選框分配不同的名稱。這樣,獲取POST表單的servlet就可以檢查每個複選框的名稱(例如user1 ... userX),如果設置了它的值,則可以刪除相應的用戶。請注意,如果複選框未設置,那麼將不會爲該名稱發送表單編碼參數,因此您可以真正檢查以查看哪些名稱已發送並刪除。

3

您正在每個複選框周圍打印全新的<html><form>。您的HTML在瀏覽器中最終顯示爲:

<html> 
    <head></head> 
    <body> 
     <html><body><form><input type="checkbox"></form></body></html> 
     <html><body><form><input type="checkbox"></form></body></html> 
     <html><body><form><input type="checkbox"></form></body></html> 
     <form><input type="submit"></form> 
    </body> 
</html> 

這是syntactically invalid HTML。你需要讓所有的複選框,並提交按鈕在相同的形式結束了重寫代碼:

<html> 
    <head></head> 
    <body> 
     <form> 
      <input type="checkbox"> 
      <input type="checkbox"> 
      <input type="checkbox"> 
      <input type="submit"> 
     </form> 
    </body> 
</html> 

那麼你也並不需要那些醜陋的JavaScript的解決方法。您只需給複選框使用相同的名稱,但使用不同的值。這樣你就可以通過HttpServletRequest#getParameterValues()來獲取選中的值。

String[] users = request.getParameterValues("user");