问题描述
我的问题如下:list.jsp里面有个链接admin/add(添加)成功后,跳转到admin/list,这个action执行后得到之前的list.jsp,在这个页面里面的某条记录里面有个查看详情的链接 admin/view,得到view.jsp页面,view.jsp页面有个返回的js代码:history.back();但是点击这个返回链接之后,本想返回到之前的list.jsp,结果却出现“页面已过期”的错误信息。我的理解是,那个list.jsp是通过add这个action得到的,点击view查询后,在 history.back()返回,又返回到那个add action,浏览器为的保护数据机制起了作用,所以显示页面过期。我想通过返回转到之前的list页面,不知道怎么处理,有时候在一些add update等输入表单页面取消操作返回时也会这样。不知道我说的清楚不,反正就是这种情形,你们应该懂的。有什么方法可以解决这样的问题呢。真心感谢你们的解答!
解决方案
建议如admin/add(添加) 成功后 通过重定向回list,这样可以防止如重复提交问题,和你说的过期问题得到view.jsp页面,view.jsp页面有个返回的js代码:history.back();但是点击这个返回链接之后 此处也不建议back返回上一页面,直接写个a标签过去不行?
解决方案二:
返回连接直接调整list.action,重定向,这是必须的啊
解决方案三:
是的,不要用浏览器的历史跳转。不稳定也不安全。应使用服务器端跳转。如果那个页面的内容访问频繁就在服务器端缓存数据。
解决方案四:
不知道楼主有没有觉得自己把自己弄混了? 本来一个简单的跳转,非要通过浏览器的JS历史记录跳转,我们在做web开发的时候,尽量不依赖浏览器就不要依赖浏览器。那么具体说一下你的那个跳转业务,你的View的返回只可能是到List,那么为什么不知道一个Url指向List的Action呢?希望楼主好好理理思路。
解决方案五:
改成通过action跳转页面
解决方案六:
add方法添加成功后 返回list。jsp的时候struts配置成重定向 <forward ... redirect="true"/>
解决方案七:
应该这样设计:点击view查询 调用action 方法。跳转到admin/list,这个action执行后得到之前的list.jsp