首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2012-03-19 
struts token 重复提交在一个action中具有三个方法:Java codeselectall(request,response,form,mapping)(

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();        }    } 

热点排行