request.getAttribute取不到值问题!感谢!
时间:2011-11-10
来源:互联网
list.jsp上有若干数据,每条后面都有个修改按钮, 点击修改按钮后 forwad到update.jsp,
在update.jsp上可以修改这条数据,修改完后,点击页面下方的确认按钮进行保存,这时候servlet的保存方法updateOk出错,request.getAttribute("emp");为空, 这个就是想修改的数据,为什么为空? 是不是前后画面不再一个scope里面了,我用的是request.getRequestDispatcher("update.jsp").forward(request, response);跳转的,应该没问题啊。。
附servlet代码:
public void update(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String strId = request.getParameter("id");
UpdateUtil util = new UpdateUtil();
Emp emp = util.getEmp(Integer.parseInt(strId));
emp.setId(Integer.parseInt(strId));
request.setAttribute("emp",emp);//这里设置了attribute
request.setAttribute("id",Integer.parseInt(strId));
request.getRequestDispatcher("update.jsp").forward(request, response); //跳转
}
public void updateOk(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//todo
Emp emp = (Emp)request.getAttribute("emp"); //此行报错!request.getAttribute("emp");为空
// Emp emp = new Emp();
emp.setName(request.getParameter("nameTextfield"));
emp.setAge(Integer.parseInt(request.getParameter("ageTextfield")));
emp.setDept(request.getParameter("deptTextfield"));
emp.setSex(request.getParameter("ageSelect"));
emp.setPhone(request.getParameter("phoneTextfield"));
emp.setRemark(request.getParameter("remarkTextarea"));
// todo idset
emp.setId(Integer.parseInt(request.getParameter("id")));
UpdateUtil util = new UpdateUtil();
util.updateEmp(emp);
request.setAttribute("message","数据修改成功!");
//todo
request.setAttribute("emp", emp);
request.getRequestDispatcher("update.jsp").forward(request, response);
}
update.jsp代码:
<form id="form1" name="form1" method="post" action="UpdateServlet?action=updateOk"> //这行有问题吗?
<br>
<table width="408" height="330" border="1" align="center" bgcolor="#FFCCCC">
<tr>
<td colspan="2"><div align="center">修改制定员工信息</div></td>
</tr>
<tr>
<td width="92"><div align="right">姓名:</div></td>
<td width="300"><div align="left">
<label>
<input type="text" name="nameTextfield" value="<%=emp.getName()%>"/>
</label>
</div></td>
</tr>
。。。。
<tr>
<td><div align="right"></div></td>
<td><div align="left">
<label>
<input name="Submit" type="submit" value="确认修改" />
</label>
</div></td>
</tr>
在update.jsp上可以修改这条数据,修改完后,点击页面下方的确认按钮进行保存,这时候servlet的保存方法updateOk出错,request.getAttribute("emp");为空, 这个就是想修改的数据,为什么为空? 是不是前后画面不再一个scope里面了,我用的是request.getRequestDispatcher("update.jsp").forward(request, response);跳转的,应该没问题啊。。
附servlet代码:
public void update(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String strId = request.getParameter("id");
UpdateUtil util = new UpdateUtil();
Emp emp = util.getEmp(Integer.parseInt(strId));
emp.setId(Integer.parseInt(strId));
request.setAttribute("emp",emp);//这里设置了attribute
request.setAttribute("id",Integer.parseInt(strId));
request.getRequestDispatcher("update.jsp").forward(request, response); //跳转
}
public void updateOk(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//todo
Emp emp = (Emp)request.getAttribute("emp"); //此行报错!request.getAttribute("emp");为空
// Emp emp = new Emp();
emp.setName(request.getParameter("nameTextfield"));
emp.setAge(Integer.parseInt(request.getParameter("ageTextfield")));
emp.setDept(request.getParameter("deptTextfield"));
emp.setSex(request.getParameter("ageSelect"));
emp.setPhone(request.getParameter("phoneTextfield"));
emp.setRemark(request.getParameter("remarkTextarea"));
// todo idset
emp.setId(Integer.parseInt(request.getParameter("id")));
UpdateUtil util = new UpdateUtil();
util.updateEmp(emp);
request.setAttribute("message","数据修改成功!");
//todo
request.setAttribute("emp", emp);
request.getRequestDispatcher("update.jsp").forward(request, response);
}
update.jsp代码:
<form id="form1" name="form1" method="post" action="UpdateServlet?action=updateOk"> //这行有问题吗?
<br>
<table width="408" height="330" border="1" align="center" bgcolor="#FFCCCC">
<tr>
<td colspan="2"><div align="center">修改制定员工信息</div></td>
</tr>
<tr>
<td width="92"><div align="right">姓名:</div></td>
<td width="300"><div align="left">
<label>
<input type="text" name="nameTextfield" value="<%=emp.getName()%>"/>
</label>
</div></td>
</tr>
。。。。
<tr>
<td><div align="right"></div></td>
<td><div align="left">
<label>
<input name="Submit" type="submit" value="确认修改" />
</label>
</div></td>
</tr>
作者: showmethegas 发布时间: 2011-11-10
<input type="text" name="nameTextfield" value="<%=emp.getName()%>"/>
改为emp
改为emp
作者: wby13579 发布时间: 2011-11-10
好像是用name吧
作者: wby13579 发布时间: 2011-11-10
你提交参数时的name,就是你用getParameter()得到参数时的参数名。如果没得到。可以在后台打印输出值看看是否传进去了。
作者: wuda236556254 发布时间: 2011-11-10
request.getAttribute("emp") emp 应该是 text的name 吧
貌似你的两个不一样
貌似你的两个不一样
作者: taylor220 发布时间: 2011-11-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28