+ -
当前位置:首页 → 问答吧 → request.getAttribute取不到值问题!感谢!

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>

作者: showmethegas   发布时间: 2011-11-10

<input type="text" name="nameTextfield" value="<%=emp.getName()%>"/>
改为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