我想实现的功能是在表格中单击某一行的delete按钮,就把同行的用户名传递到servlet进行处理,请问如何实现?
我写的代码如下,但temp返回为空:
<%@page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="DOM.UserDom"%>
<%
    String path = request.getContextPath();
    Vector<UserDom> user=(Vector)session.getAttribute("user");
    UserDom userdom;
    String temp="";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>查询</title>
    <script>
     function deleteUser(){
         temp=document.getElementById("td1").innerHTML;
     form1.submit();
     }
    </script>
  </head>
  
  <body>
  <!--建立表格-->
  <form name="form1" method="post" action="<%=path%>\UserServlet?action=delete&username=<%temp%>">
    <table border="1" id="tt"><!--线宽为1-->
     <tr>
      <td> 用户 </td>
      <td> 姓名 </td>
      <td> 年龄 </td>
      <td> 删除记录 </td>
     </tr>
     <% if(user!=null){%>
     <%for(int i=0;i<user.size();i++){
     userdom=(UserDom)user.get(i);%>
     <tr>
     <td id="td1"><a href="table.jsp?name=<%=userdom.getName()%>"><%= userdom.getName()%></a></td>
     <td><%= userdom.getSex()%></td>
     <td><%= userdom.getAge()%></td>
     <td><input name=b type=button value=delete onclick="deleteUser()"></td>
     </tr>
     <%}%>
     <%}%>
    </table>
  </form>
  </body>
</html>

解决方案 »

  1.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
      <head> 
        <title>查询 </title> 
        <script> 
        function deleteUser(oval){ 
    alert(oval);
    document.getElementById("username") = oval; // 将值存储到username这个隐藏字段里,然后serverlet里用request.getParamer("username")取 
    form1.submit(); 
        } 
        </script> 
      </head> 
      
      <body> 
      <!--建立表格--> 
      <form name="form1" method="post"> 
      <input type="hidden" name="username">
        <table border="1" id="tt"> <!--线宽为1--> 
        <tr> 
        <td> 用户 </td> 
        <td> 姓名 </td> 
        <td> 年龄 </td> 
        <td> 删除记录 </td> 
        </tr> 
        <tr> 
        <td> user</td> 
        <td> 男  </td> 
        <td> 24  </td> 
        <td> <input name=b type=button value=delete onclick="deleteUser(this.parentNode.parentNode.firstChild.innerHTML)"> </td> 
        </tr> 
        </table> 
      </form> 
      </body> 
    </html> 
      

  2.   

    在tr里使用onclick事件,如:
    <tr onclick="deleteUser(<%=userdom.getId()%>)">把主键传递过去
    <script>
    fucntion deleteUser(id){
       var url = "<%=request.getContextPath%>/访问servlet的路径?id="+id;
       window.open(url,'','');
    }
    </script>
      

  3.   

    或者按钮直接用链接代替 
    <a href="提交地址&name=<%= userdom.getName()%>"
      

  4.   


    我觉的楼主写的太复了,
    既然你的form中的action指定了相应的servlet来处理(也就是说,你按一下按钮就会把form里面的数据处理交给servlet来处理),不用再加&username= <%temp%>"了,
    还有下面的<a href="table.jsp?name= <%=userdom.getName()%>"> <%= userdom.getName()%>都不要加,
    所有的获取和附值操作都在servlet来处理就可以了,
    你这样业务逻辑又乱,而且容易出错。你在servlet中用request.getParameter("username");不就获取了用户名吗,若是以后扩展想把用户数据保存起来,使用一个user的javaBean封装就可以了,还能保存到数据库
      

  5.   

    楼上几位,提供的方法都是不明知的选择(不是攻击啊!,竹大别删帖)
    在前台尽量不用或少用<a href=""></a>链接
    js可以是可以,但这里楼主使用表单提交就没有必要再用js的事件处理了
      

  6.   

    在触发事件后用ipnput="",name=""将值传给处理函数
      

  7.   

    <html:form method="post" action="/checkeditmessage.do" styleId="fupdate">
    <input type="hidden" id="hid" name="hid"/>
     </html:form>
    这是我写的一个传值语句,是将文章的id传给checkeditmessageAction
      

  8.   

    jsp 里面 先给出 <html:form action=TheAction?action= query" method="post"> </html:form> 
    然后跳转到TheActionForm找到JSP中的 bean 。 
    然后找到对应的 config.xml 中的 action 里面要添加对应的跳转条件。 
    <forward name="well" path="/user/Well.jsp" /> 
    从而找到 对应的 TheAction.java 一般放在 src 下的包里。 TheAction.java 里面有对应的跳转方法。 public ActionForward query(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 
    String target = "well"; return mapping.findForward(target); 红色部分表示的是 必须对应起来的一致。