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传给服务器端,实时获取用户信息。
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传给服务器端,实时获取用户信息。
解决方案 »
- java
- 推荐一本--数据结构的书(JAVA)
- 关于html的object标签,来实现ftp的挂接,请高人指教
- c:foreach 如何只显示最末一条,获取不了items的长度,在线等!
- 准备用weblogic开发,哪个版本的好
- 做过邮件发送的请进来
- myeclipse加入hibernate,struts,spring等框架问题
- sharepoint api
- [200分]hibernate的关联查询问题,当两个表单独运行时是正确的,但当两个表形成one-to-many关联时,对hibernater对其中的一个操作时就
- tomcat老是崩溃,请教高手是怎么回事?
- 为什么用了SSH后myeclipse的异常都不输出控制台
- 关于java操作oracle的难题
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;
}用这个试试
UP
userDao.js中不过是一个简单的JavaScript代理对象,此文件由DWR生成,不会有错的。楼主说页面上能出正确结果,由此可见,服务器端的Java代码也没有问题。问题就出在页面上,原因及解决方案我都已经在1楼中说过啦。呵呵。看样子,3楼对DWR比较熟悉哦,呵呵。
<%
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 :<input type="text" id="email"/><br>
userid :<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 :<input type="text" id="email"/><br>
userid :<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对象呢?请求大家指点!
请把你的页面替换成以下代码(或者也可以只替换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 :<input type="text" id="email"/><br>
userid :<span id="userid">-1</span><br><br>
<input type="button" value="保存"/>
</body>
</html>
你失败的原因:你拼在字符串中的user对象,将变成字符串。不会再是你原来的user对象。如果一定要传user“对象”,你得在服务器端的Java代码中重对应的JavaBean(如果没猜错,应该是User.java文件吧?)的toString()方法,即其返回JSON字符串。然后在toUpdateUser()中使用eval()函数将该字符串转换成JavaScript对象,那就太麻烦啦,呵呵。就用当前这种方法吧。已经挺好的啦。呵呵。
上帖中第4行的“重对应的JavaBean”应为“重写对应的JavaBean”
代码早就改好了,但是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>
<%
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 :<input type="text" id="email"/><br>
userid :<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 :<input type="text" id="email"/><br>
userid :<span id="userid">-1</span><br><br>
<input type="button" value="保存"/>
</body>
</html>
这样修改后,再访问index.jsp,成功实现需求。
<%
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 :<input type="text" id="email"/><br>
userid :<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 :<input type="text" id="email"/><br>
userid :<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) {
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 :<input type="text" id="email"/><br>
userid :<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标签中,以上理解对吗?
请求大家的指点,谢谢您!