2010-12-17 32 views
0

チェックボックスを前面に表示してユーザーのリストを表示する必要があります。私は今、いくつかの名前を選択し、それをデータベースで削除したいと考えています。私はユーザーを表示するためのコードを書いています。選択した値を取得して削除する方法がわかりません。私がここで試したことを助けてください。チェックボックスのチェック値を取得してサーブレットに送信

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

エラーが発生しているか、変更されていないか、間違っていますか?何が起こっているのか教えてください。それが問題の原因を特定するのに役立ちます。 –

答えて

1

ユーザーごとに各チェックボックスに異なる名前を割り当てる必要があります。このように、POSTedフォームを取得したサーブレットは、各チェックボックスの名前(たとえばuser1 ... userX)をチェックし、その値が設定されている場合は対応するユーザーを削除できます。チェックボックスが設定されていない場合、その名前に対して送信されるフォームエンコードされたパラメータは存在しないので、送信された名前を確認して削除することができます。

3

すべてのチェックボックスのまわりで全く新しい<html><form>を印刷しています。これはsyntactically invalid 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> 

:などのようにあなたの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"); 
関連する問題