在页面A里点pop按钮,submit页面,在action里根据按钮是pop把actionform里type属性的值改为"pop",然后再转回页面A,在页面A的开口用类似这样的代码:
<logic:equal name="actionform" property="type" value="pop">
<script>
var popWindow = window.pop(url);
</script>
</logic:equal>
  这样点pop按钮submit页面,并改变了type的值回来,符合logic:equal的条件,触发了弹出窗口。但是关闭弹出窗口后,点页面A上的另外一个按钮转到页面B后再点浏览器上后退回到A后,已经关闭的弹出窗口又自动打开了。我知道这是由于后退后,ie自动把上次的页面请求又发了一遍,而上次请求回来的显然是type值为pop的form,这样那个弹出窗口事件又触发了一次。
  如果用js直接打开弹出窗口而不submit页面的话就简单了,可是由于其他的原因,必须要走这样的步骤,请问有什么解决的办法?

解决方案 »

  1.   

    重复提交解决:
    1.提交跳回A页面的时候用重定向<forward redirect="true"/>
    2.struts令牌机制
      

  2.   

    重复提交解决:
    1.提交跳回A页面的时候用重定向<forward redirect="true"/>
    2.struts令牌机制
    ========================================================
    正解答。ActionForward oldforward = ......
    Action forward = new ActionForward(oldforward .getName(), oldforward .getPath(), true, oldforward .getModule();
    第3个参数 就是 redirect="true"