我的本意是想通过js来解决刷新页面时超链接重复提交的问题,可是加上js代码后页面跳转总是不对,请高手指点,代码如下:
   这是页面超链接的代码:
 <s:iterator value="dirList">
      <a href="mysong!myDirSongList?dirId=${dirNum }&userId=${session.userId }"><s:property value="dirName"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#"  onclick="javascript:deleteD('${dirNum }','${session.userId }');">删除</a>
 </s:iterator >   这是js 代码:
               function deleteD(dirId,userId){ if(confirm("确定删除?")){

      window.location.href = "mysong!delDir?dirId="+dirId+"&userId="+userId;
        
}else{
return;
}
   }
   
   这是struts2.xml的配置:
    <action name="mysong" class="qqAction">
       <result name="dirsongs">/dirsongs.jsp</result>           
    </action>   这是后台action里要调用的方法:
     public String delDir(){
this.dirList = this.qqManager.deleteDir(this.userId, this.dirId);
         return "dirsongs";
}   结果本该是跳转到dirsongs.jsp,但是经过多次测试,后台的action里的delDir()方法会执行,如果struts.xml里如果没有配<result name="dirsongs">/dirsongs.jsp</result>也会报错,而且配置了<result name="input">/dirsongs.jsp</result>,但是虽然会找到相应的result ,但是并不会跳转到相应的dirsongs.jsp,而是跳转到首页,如果把不用js只是普通的超链接就能顺利执行通过,只是无法控制刷新时重复提交。

解决方案 »

  1.   

    window.location.href = "mysong!delDir?dirId="+dirId+"&userId="+userId;后面那个请求怎么是那样的
      

  2.   

    在需要控制重复提交的页面加<s:token></s:token>
    struts.xml里配
    <interceptor-ref name="token" />拦截器
    然后配一个全局的result,返回一个重复提交提示页面
    <global-results>
    <result name="invalid.token">
    /WEB-INF/jsp/framework/tokenCheck.jsp
    </result>
    </global-results>
      

  3.   

       回复3楼的同志,我用的是超链接提交,不是用表单,用了一个表单提交,那个用的是<token>来控制的,但是超链接提交有什么好办法吗?
            回复2楼同志,能具体指出我的错误吗?
      

  4.   

    window.location.href = "mysong!delDir.action?dirId="+dirId+"&userId="+userId;