使用struts+hibernate,在显示数据jsp删除数据后再返回原页面,重新显示删除后的数据失败

herlioner 软件测试工程师  2018-02-13 09:22:44
action:
/**
* 删除学生信息
*/
public String delete(){
//根据jsp的stunum值删除对应学生信息
studentDAO.delete(student.getStunum());
//重新获得数据库内的所有的学生信息再重新赋值给students给jsp输出
students = studentDAO.list();
return "deletesuccess";
}
jsp:
<s:iterator value="students" var="student">
<tr><td>${student.stunum}</td>
<td>${student.stuname}</td>
<td>${student.sexnum}</td>
<td>${student.spenum}</td>
<td>${student.studate}</td>
<td>${student.stupad}</td>
<td>
<a href="<s:url action="studentdelete">
<s:param name="student.stunum">${student.stunum}</s:param>
</s:url>">删除</a>
<a href="<s:url action="turntostudentupdatepage">
<s:param name="student.stunum">${student.stunum}</s:param>
</s:url>">修改</a>
</td>
</tr>
</s:iterator>

问题描述:先在jsp页面显示所有student,点击删除后,可以删除成功,然后再重新转到之前的jsp页面显示删除后的student,发现前面没有显示,在action里面倒是可以在控制台里输出来,不知道为什么,求指导
...全文
960 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
引用 2 楼 herlioner 的回复:
[quote=引用 1 楼 小钻风寻大观园的回复:]你要知道,对象的赋值运算是改变的地址。所以students = studentDAO.list();这句就改变了students的地址,而不是Struts2值栈中的地址了。jsp中的取值是从Struts2的值站中取值的。 也就是说students = studentDAO.list();并没有修改值栈中的值,只是将值栈中的students变成垃圾了。 dao层操作要带上students,如studentDAO.list(students);这样直接对值栈进行操作
所以我应该要重写dao的list方法是吗?[/quote] 可以不用,你也可以直接将学生列表加入到request域当中,也可以重写dao
回复
herlioner 2018-02-14
引用 1 楼 小钻风寻大观园的回复:
你要知道,对象的赋值运算是改变的地址。所以students = studentDAO.list();这句就改变了students的地址,而不是Struts2值栈中的地址了。jsp中的取值是从Struts2的值站中取值的。 也就是说students = studentDAO.list();并没有修改值栈中的值,只是将值栈中的students变成垃圾了。 dao层操作要带上students,如studentDAO.list(students);这样直接对值栈进行操作
所以我应该要重写dao的list方法是吗?
回复
你要知道,对象的赋值运算是改变的地址。所以students = studentDAO.list();这句就改变了students的地址,而不是Struts2值栈中的地址了。jsp中的取值是从Struts2的值站中取值的。 也就是说students = studentDAO.list();并没有修改值栈中的值,只是将值栈中的students变成垃圾了。 dao层操作要带上students,如studentDAO.list(students);这样直接对值栈进行操作
回复
发动态
发帖子
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
社区公告
暂无公告