锁定老帖子 主题:jsf如何防止刷新重复提交
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-12-15
试着用struts的解决方案,如果是重复提交有调用bean里面的action方法,则可以使用struts的解决方案,但jsf的生命周期的原理,造成有时候重复提交不会调用manager bean的action方法,就直接render,所以struts的方法没有办法使用。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-12-15
我工作中解决刷新问题是用struts的令牌机制,具体后台就不说了,相信也都会用,有时我在同一页操作时会出现没有执行后台要完成的功能而直接跳了回来(由于令牌引起的),这样在页面操作时这个功能按钮每点一次,就重新取一下token,偶经验尚浅,不知道下面的符不符合你的情况。
引用 <%@ page import="org.apache.struts.Globals"%> 在按钮的脚本中 <% String sess = (String)session.getAttribute(Globals.TRANSACTION_TOKEN_KEY); %> var para = '<%=sess%>'; obj.action='<html:rewrite page="/xxxxxx.do?method=xxxxxx&"/>'+'org.apache.struts.taglib.html.TOKEN='+para; obj.submit(); 其中token参数的名必需是org.apache.struts.taglib.html.TOKEN 如有不正,请见谅,我在处理刷新问题时是这样的 |
|
返回顶楼 | |
发表时间:2005-12-15
在filter里面判断是否刷新,然后直接到一个禁止刷新提示的画面,比较猪的解决方案
|
|
返回顶楼 | |
发表时间:2005-12-15
先把所有的页面都坐在html框架里 这样刷新他不会递交到后台的action
然后用js做掉判断两次submit的判断 第2次以后都让他return 不submit到action 感觉这样是最简单的 不涉及到代码 |
|
返回顶楼 | |
发表时间:2005-12-15
就在filter里面判断是否刷新(也可以在phaseListen的before restore view阶段判断是否刷新),虽然比较猪。
还有一种方法就是,manager bean的scope用session,navigation case使用<redirect/> 楼上的方法应该不行,不知道有没有理解错,如果用右键点选刷新某个页面,frame就没有用了 |
|
返回顶楼 | |
发表时间:2005-12-16
右键选择刷新 就是走地址栏中的地址的
如果用html框架 那个地址是不会变的 正常情况下 是不可能走到新建 修改等action的 顶多走到主页而已 |
|
返回顶楼 | |
发表时间:2005-12-16
如果你用过struts和jsf等框架,且不是使用redirect,那页面的url地址为前一页的url地址
|
|
返回顶楼 | |
发表时间:2005-12-18
使用Frame封装一下页面
与后面的代码是什么没有关系的 这个是HTML自己的功能 我不知道你的Frame是怎么做的 反正我做过的上面的地址是不变的 我朋友做的也是不变的 |
|
返回顶楼 | |
发表时间:2005-12-18
在IE中,一个页面中多个Frame,如果将鼠标点在frame上,按F5刷新,只会刷新那个frame页面
如果,你点击浏览器上边的刷新按钮,则会刷新top页面及其所有的子页面。 如果你的系统分层架构,有的关键功能对用户来说真的需要防止重复提交的话 synchronized (){ 。。。。。。。。。。。。。。。。 } 性能会有一点影响 。 |
|
返回顶楼 | |
发表时间:2006-02-02
曲线救国法
boolean s=true;//第一次访问该页 public void vai(){ if(s){ do{....} s=false; } } 小程序比较简单。。 |
|
返回顶楼 | |