var aUpdate = document.createElement("a");
          aUpdate.innerText = "修改";
          aUpdate.setAttribute("href", "#");
          aUpdate.onclick = function() {
            toUpdateUser(user);
          }
用错了,呵呵。在这儿请别使用onclick去使用事件回调!因为等你想回调的时候,那个user早已时过境迁,不是你所希望的user了哦。
直接使用href吧,形如:aUpdate.setAttribute( "href", "javascript:toUpdateUser('" + user.username + "');" );
注意,为了简单,我只让toUpdateUser接受了username,实际上toUpdateUser的参数可以有很多个,分别对应用户的每个可以修改的属性,这样在toUpdateUser()函数中,直接把参数中的值显示到相应的HTML标签中就够了。
如果toUpdateUser只接收username,则可以在toUpdateUser()函数中把username传给服务器端,实时获取用户信息。

解决方案 »

  1.   

    学习,楼主最好把全的文件传上来,如UserDao.js 及服务器端的java
      

  2.   

     function displayUser(users) {
    DWRUtil.removeAllRows("tbody");
    DWRUtil.addRows("tbody",users,[tdUsername,tdAddress,tdEmail,
    aUpdate]);
    }var tdUsername=function(unit){return unit.username;}
    var tdEmail=function(unit){return unit.email;}
    var tdAddress=function(unit){return unit.address;}
    var aUpdate=function(unit){return "<a href=javascript:upd('"+unit.username+"')>修改</a>";}function upd(username){
    document.all.username.value=username;
    }用这个试试
      

  3.   

    .js是不出错了?或是逻辑不对!
    UP
      

  4.   


    userDao.js中不过是一个简单的JavaScript代理对象,此文件由DWR生成,不会有错的。楼主说页面上能出正确结果,由此可见,服务器端的Java代码也没有问题。问题就出在页面上,原因及解决方案我都已经在1楼中说过啦。呵呵。看样子,3楼对DWR比较熟悉哦,呵呵。
      

  5.   

    感谢大家的回复!将index.jsp的代码改成:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
        
        <script type="text/javascript">
          function initUser() {
            userDAO.getAllUsers(displayUser);
          }
          
          function displayUser(users) {
            var tbody = document.getElementById("tbody");
            
            for(var item in users) {
              var user = users[item];
              
              var tr = document.createElement("tr");
              
              var tdUsername = document.createElement("td");
              tdUsername.innerText = user.username;
              tr.appendChild(tdUsername);
              
              var tdAddress = document.createElement("td");
              tdAddress.innerText = user.address;
              tr.appendChild(tdAddress);
              
              var tdEmail = document.createElement("td");
              tdEmail.innerText = user.email;
              tr.appendChild(tdEmail);
              
              // DOWN:
              var tdUpdate = document.createElement("td");
              
              var aUpdate = document.createElement("a");
              aUpdate.innerText = "修改";
              aUpdate.setAttribute("href", "javascript:toUpdateUser("+user.userid+", '"+user.username+"', '"+user.address+"', '"+user.email+"')");
              tdUpdate.appendChild(aUpdate);
              
              tr.appendChild(tdUpdate);
              // UP :
              
              tbody.appendChild(tr);
            }
          }
          
          //function toUpdateUser(user) {
            //dwr.util.setValues(user);
          //}
          function toUpdateUser(userid, username, address, email) {
            DWRUtil.setValue("userid", userid);
            DWRUtil.setValue("username", username);
            DWRUtil.setValue("address", address);
            DWRUtil.setValue("email", email);
          }
          
          window.onload = function() {
            initUser();
          }
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
    后,问题解决!但是,若用下面的代码:index.jsp:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
        
        <script type="text/javascript">
          function initUser() {
            userDAO.getAllUsers(displayUser);
          }
          
          function displayUser(users) {
            var tbody = document.getElementById("tbody");
            
            for(var item in users) {
              var user = users[item];
              
              var tr = document.createElement("tr");
              
              var tdUsername = document.createElement("td");
              tdUsername.innerText = user.username;
              tr.appendChild(tdUsername);
              
              var tdAddress = document.createElement("td");
              tdAddress.innerText = user.address;
              tr.appendChild(tdAddress);
              
              var tdEmail = document.createElement("td");
              tdEmail.innerText = user.email;
              tr.appendChild(tdEmail);
              
              // DOWN:
              var tdUpdate = document.createElement("td");
              
              var aUpdate = document.createElement("a");
              aUpdate.innerText = "修改";
              aUpdate.setAttribute("href", "javascript:toUpdateUser(" + user + ")");
              tdUpdate.appendChild(aUpdate);
              
              tr.appendChild(tdUpdate);
              // UP :
              
              tbody.appendChild(tr);
            }
          }
          
          function toUpdateUser(user) {
            dwr.util.setValues(user);
          }
          //function toUpdateUser(userid, username, address, email) {
            //DWRUtil.setValue("userid", userid);
            //DWRUtil.setValue("username", username);
            //DWRUtil.setValue("address", address);
            //DWRUtil.setValue("email", email);
          //}
          
          window.onload = function() {
            initUser();
          }
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
    ,则访问index.jsp页面时,单击任何一个“修改”链接,不会弹出对话框,也没有任何信息显示在下面的文本框与span标签中,此时在IE状态栏的左下角会显示:网页上有错误!此时双击左下角的叹号图标,弹出一个对话框:标题:Internet Explorer内容:此网页上的问题可能使其无法正常显示或正常运行。以后双击状态
    栏中显示的警告图标即可显示此信息。(一个复选框)当页面包含错误时,始终显示此消息(A)。“确定”按钮    “隐藏详细信息(D)”按钮下面的框中显示了详细信息:行:  1
    Char:22
    错误:缺少']'
    代码:0
    URL: http://localhost:8080/CRUDtoUser不能进入调试状态,所以,没能找到具体什么错误。问题:我想向toUpdateUser()方法传一个user对象进去,为什么出上面的错误呢?如何能使之可以向toUpdateUser()方法传入user对象呢?请求大家指点!
      

  6.   

    楼主,我给你修改了一下。
    请把你的页面替换成以下代码(或者也可以只替换JavaScript部分),保证你出正确结果,呵呵。<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">    <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='dwr/engine.js'></script>
        <script type='text/javascript' src='dwr/util.js'></script>
        
        <script type="text/javascript">      function initUser() {
            userDAO.getAllUsers(displayUser);
          }      var cellFuncs = [
            function( user ) { return user.username; },
            function( user ) { return user.address; },
            function( user ) { return user.email; },
            function( user ) {
              var params = "'" + user.username + "', '" + user.address + "', '" + user.email + "', '" + user.userid + "'";
              return "<a href=\"javascript:toUpdateUser(" + params + ");\">修改</a>";
            }
          ];
          
          function displayUser(users) {      
           DWRUtil.removeAllRows( "tbody" );
           DWRUtil.addRows( "tbody", users, cellFuncs, { escapeHtml : false } );
          }
          
          function toUpdateUser( username, address, email, userid ) {
            dwr.util.setValue( "username", username );
            dwr.util.setValue( "address", address );
            dwr.util.setValue( "email", email );
            dwr.util.setValue( "userid", userid );
          }
          
          window.onload = function() {
            initUser();
          }
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
      

  7.   

    呵呵,没想到楼主刚刚也改成功了呀。恭喜!提醒楼主,不要老想着传对象给toUpdateUser()啦,呵呵。
    你失败的原因:你拼在字符串中的user对象,将变成字符串。不会再是你原来的user对象。如果一定要传user“对象”,你得在服务器端的Java代码中重对应的JavaBean(如果没猜错,应该是User.java文件吧?)的toString()方法,即其返回JSON字符串。然后在toUpdateUser()中使用eval()函数将该字符串转换成JavaScript对象,那就太麻烦啦,呵呵。就用当前这种方法吧。已经挺好的啦。呵呵。
      

  8.   

    晕……
    上帖中第4行的“重对应的JavaBean”应为“重写对应的JavaBean”
      

  9.   

    想了想,对于楼主提出的要求,似乎找到了一种简单点的解决方案。
    代码早就改好了,但是CSDN对连续回帖的次数有限制,所以现在才发。呵呵。写了个userToString()的函数,负责user对象的转换。
    请将相关的JavaScript代码替换成如下内容试试,呵呵。    <script type="text/javascript">      function initUser() {
            userDAO.getAllUsers(displayUser);
          }
        
          function userToString( user )
          {
            var s = "{ username: \'" + user.username + "\' , ";
            s += "address: \'" + user.address + "\' , ";
            s += "email: \'" + user.email + "\' ,";
            s += "userid: \'" + user.userid + "\' }";
            return s;
          }      var cellFuncs = [
            function( user ) { return user.username; },
            function( user ) { return user.address; },
            function( user ) { return user.email; },
            function( user ) {
              return "<a href=\"javascript:toUpdateUser( " + userToString( user ) + " );\">修改</a>";
            }
          ];
          
          function displayUser(users) {      
           DWRUtil.removeAllRows( "tbody" );
           DWRUtil.addRows( "tbody", users, cellFuncs, { escapeHtml : false } );
          }
          
          function toUpdateUser( user ) {
            DWRUtil.setValue( "username", user.username );
            DWRUtil.setValue( "address", user.address );
            DWRUtil.setValue( "email", user.email );
            DWRUtil.setValue( "userid", user.userid );
          }
          
          window.onload = function() {
            initUser();
          }
        </script>
      

  10.   

    感谢大家的回复!按照3楼的思路,将代码改成:index.jsp:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">    <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='dwr/engine.js'></script>
        <script type='text/javascript' src='dwr/util.js'></script>
        
        <script type="text/javascript">        function initUser() {
                userDAO.getAllUsers(displayUser);
            }        function displayUser(users) {          
                DWRUtil.removeAllRows("tbody");
                DWRUtil.addRows("tbody", users, [tdUsername, tdAddress, tdEmail, aUpdate]);
            }
            
            var tdUsername = function(user) { return user.username; };
            var tdAddress = function(user) { return user.address; };
            var tdEmail = function(user) { return user.email; };
            var aUpdate = function(user) {
                return "<a href=javascript:toUpdateUser('" + user.username + "');>修改</a>";
            };
          
            function toUpdateUser(username) {
                document.all.username.value = username;
            }
          
            window.onload = function() {
                initUser();
            }
            
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
    后,访问index.jsp,页面中第4列中显示的是:
    <a href=javascript:toUpdateUser('张一');>修改</a> 
    <a href=javascript:toUpdateUser('张二');>修改</a> 
    <a href=javascript:toUpdateUser('张三');>修改</a> 
    <a href=javascript:toUpdateUser('张四');>修改</a> 
    <a href=javascript:toUpdateUser('张五五');>修改</a> 
    ...
    ...
    ...这样的代码,并没有显示链接。加上{ escapeHtml : false },即:index.jsp:
    <%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">    <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='dwr/engine.js'></script>
        <script type='text/javascript' src='dwr/util.js'></script>
        
        <script type="text/javascript">        function initUser() {
                userDAO.getAllUsers(displayUser);
            }        function displayUser(users) {          
                DWRUtil.removeAllRows("tbody");
                DWRUtil.addRows("tbody", users, [tdUsername, tdAddress, tdEmail, aUpdate], { escapeHtml : false });
            }
            
            var tdUsername = function(user) { return user.username; };
            var tdAddress = function(user) { return user.address; };
            var tdEmail = function(user) { return user.email; };
            var aUpdate = function(user) {
                return "<a href=javascript:toUpdateUser('" + user.username + "');>修改</a>";
            };
          
            function toUpdateUser(username) {
                document.all.username.value = username;
            }
          
            window.onload = function() {
                initUser();
            }
            
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
    这样修改后,再访问index.jsp,成功实现需求。
      

  11.   

    { escapeHtml : false }在我给的代码中,是有的呢。嘿嘿
      

  12.   

    按照11楼的思路,将代码改成:index.jsp:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
        
        <script type="text/javascript">
          function initUser() {
            userDAO.getAllUsers(displayUser);
          }
          
          function displayUser(users) {
            var tbody = document.getElementById("tbody");
            
            for(var item in users) {
              var user = users[item];
              
              var tr = document.createElement("tr");
              
              var tdUsername = document.createElement("td");
              tdUsername.innerText = user.username;
              tr.appendChild(tdUsername);
              
              var tdAddress = document.createElement("td");
              tdAddress.innerText = user.address;
              tr.appendChild(tdAddress);
              
              var tdEmail = document.createElement("td");
              tdEmail.innerText = user.email;
              tr.appendChild(tdEmail);
              
              // DOWN:
              var tdUpdate = document.createElement("td");
              
              var aUpdate = document.createElement("a");
              aUpdate.innerText = "修改";
              var u = "{ userid : " + user.userid + ", username : '" + user.username + "', address : '" + user.address + "', email : '" + user.email + "' }";
              aUpdate.setAttribute("href", "javascript:toUpdateUser(" + u + ")");
              tdUpdate.appendChild(aUpdate);
              
              tr.appendChild(tdUpdate);
              // UP :
              
              tbody.appendChild(tr);
            }
          }
          
          function toUpdateUser(user) {
            //var u = eval('(' + user + ')');
            dwr.util.setValues(user);
          }
          //function toUpdateUser(userid, username, address, email) {
            //DWRUtil.setValue("userid", userid);
            //DWRUtil.setValue("username", username);
            //DWRUtil.setValue("address", address);
            //DWRUtil.setValue("email", email);
          //}
          
          window.onload = function() {
            initUser();
          }
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
    后,成功实现!
    或改成
    index.jsp:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
        
        <script type="text/javascript">
          function initUser() {
            userDAO.getAllUsers(displayUser);
          }
          
          function displayUser(users) {
            var tbody = document.getElementById("tbody");
            
            for(var item in users) {
              var user = users[item];
              
              var tr = document.createElement("tr");
              
              var tdUsername = document.createElement("td");
              tdUsername.innerText = user.username;
              tr.appendChild(tdUsername);
              
              var tdAddress = document.createElement("td");
              tdAddress.innerText = user.address;
              tr.appendChild(tdAddress);
              
              var tdEmail = document.createElement("td");
              tdEmail.innerText = user.email;
              tr.appendChild(tdEmail);
              
              // DOWN:
              var tdUpdate = document.createElement("td");
              
              var aUpdate = document.createElement("a");
              aUpdate.innerText = "修改";
              aUpdate.setAttribute("href", "javascript:toUpdateUser(" + userToString(user) + ")");
              tdUpdate.appendChild(aUpdate);
              
              tr.appendChild(tdUpdate);
              // UP :
              
              tbody.appendChild(tr);
            }
          }
          
          function toUpdateUser(user) {
            //var u = eval('(' + user + ')');
            dwr.util.setValues(user);
          }
          //function toUpdateUser(userid, username, address, email) {
            //DWRUtil.setValue("userid", userid);
            //DWRUtil.setValue("username", username);
            //DWRUtil.setValue("address", address);
            //DWRUtil.setValue("email", email);
          //}
          
          function userToString(user) {
              var u = "{ userid : " + user.userid + ",";
              u += " username : '" + user.username + "',";
              u += " address : '" + user.address + "',";
              u += " email : '" + user.email + "' }";
              
              return u;
          }
          
          window.onload = function() {
            initUser();
          }
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>
    也成功实现。
      

  13.   

    [接上贴]
    或改成:
    index.jsp:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
        <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
        
        <script type="text/javascript">
          function initUser() {
            userDAO.getAllUsers(displayUser);
          }
          
          function displayUser(users) {
              dwr.util.removeAllRows("tbody");
              dwr.util.addRows("tbody", users, cellFuncs, { escapeHtml : false });
          }
          
          var cellFuncs = [
              function(user) { return user.username; },
              function(user) { return user.address; },
              function(user) { return user.email; },
              function(user) {
                  return "<a href=\"javascript:toUpdateUser(" + userToString(user) + ")\">修改</a>"
              }
          ];
          
          //function toUpdateUser(user) {
            //dwr.util.setValues(user);
          //}
          function toUpdateUser(user) {
            DWRUtil.setValue("userid", user.userid);
            DWRUtil.setValue("username", user.username);
            DWRUtil.setValue("address", user.address);
            DWRUtil.setValue("email", user.email);
          }
          
          function userToString(user) {
              var u = "{ userid : " + user.userid + ",";
              u += " username : '" + user.username + "',";
              u += " address : '" + user.address + "',";
              u += " email : '" + user.email + "' }";
              
              return u;
          }
          
          window.onload = function() {
            initUser();
          }
        </script>
      </head>
      
      <body>
        <table border="1">
          <thead>
            <tr>
              <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
            </tr>
          </thead>
          <tbody id="tbody">
            
          </tbody> 
        </table>
        <p></p>
        <p></p>
        username:<input type="text" id="username"/><br>
        address :<input type="text" id="address"/><br>
        email &nbsp;&nbsp;:<input type="text" id="email"/><br>
        userid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<span id="userid">-1</span><br><br>
        <input type="button" value="保存"/>
      </body>
    </html>也成功实现。谢谢accp206,敬佩!
    问题1:
    User.java实体类中的userid属性的类型是:int,那我们在连接字符串时:      function userToString(user) {
              var u = "{ userid : " + user.userid + ",";
              u += " username : '" + user.username + "',";
              u += " address : '" + user.address + "',";
              u += " email : '" + user.email + "' }";
              
              return u;
          }最后拼成的字符串应当是 "userid : 3" 这样的形式,而不应当是 "userid : '3'" 这样的形式,虽然 "userid : '3'" 这样的形式不会出错,且也可以实现我们想要的需求,但标准的写法是:"userid : 3" ,对吗?
    问题2:
    我们向userToString()方法传入的是一个User实体类的对象,此方法返回一个这样形式的字符串:"{ userid : 3, username : '张三', address : '张三市', email : '[email protected]' }",当将此字符串传递给toUpdateUser()方法时,JavaScript就不会再将它认为是一个字符串,而会将它认为是一个对象,所以,在此方法中,我们用dwr.util.setValues(user);或dwr.util.setValue("userid", user.userid);
    dwr.util.setValue("username", user.username);
    dwr.util.setValue("address", user.address);
    dwr.util.setValue("email", user.email);都可以将值正确地赋值到下面的文本框与span标签中,以上理解对吗?
    请求大家的指点,谢谢您!