当前位置: 代码迷 >> Java Web开发 >> struts token 重复提交,该怎么解决
  详细解决方案

struts token 重复提交,该怎么解决

热度:778   发布时间:2016-04-17 10:39:57.0
struts token 重复提交
在一个action中具有三个方法:
Java code
selectall(request,response,form,mapping)(转向的页面为a.jsp,分两部分:1.具有提交功能,可以设置表单。2.用来列出已经设好的信息。),delete(request,response,form,mapping)(在a.jsp页面的列表选项删除功能提交后进行删除操作);add(request,response,form,mapping)(添加功能)

用户登录后,先调用selectall方法进入a.jsp,我在selectall方法中设置了savetoken():
Java code
try {             allRecorders = crmDao.getCombototal(org);     all = crmDao.getAllCombo(currentPage, lineSize, org);    } catch (Exception e) {    e.printStackTrace();    }    saveToken(request);

在delete方法中加入:
Java code
if(!isTokenValid(request)){    saveToken(request);    request.setAttribute("errormessage", "套餐已经删除,不能重复删除!");    return mapping.findForward("taocanexit");  }else{    crmDao.deleteTaocan(tcid);    resetToken(request);    return selectall(mapping, form, request, response);    }

可是这样后,当我一点击删除它就会提示:套餐已经删除,不能重复删除。是不是我设的token错误?我看别的例子都是先有一个prepareaction中设置savetoken,可是这样每个都加一个prepareaction的话,太浪费了。

------解决方案--------------------
探讨
引用:
a.jsp中应该提供一个表单,它会在表单中写入一个隐藏值,保存令牌值

a.jsp有表单。这个隐藏值是不是自动写入的?

------解决方案--------------------
HTML code
    function doDel(tcid){        if( confirm("确认删除吗?")){            document.forms[0].method.value = "delete";            document.forms[0].tcid.value = tcid;            document.forms[0].action = "/comboinit.do";            document.forms[0].submit();        }    }
  相关解决方案