刚开始学习jfinal,最近碰到一个问题希望能给与指教,不胜感激!
问题代码:
public void addDept() {
Dept dept = getModel(Dept.class, "dept");
boolean flag = dept.save();
if (flag) {
log.info("部门" + dept.getDname() + "添加成功,添加时间" + new Date());
render("/admin/dept/deptManage.jsp");
}
}
问题描述:
这是一个添加部门的方法,保存之后render到列表页,整体上没问。我用的浏览器是360安全浏览器,习惯性的使用 “重新加载框架” 这个功能,没想到的是又多出来一条新数据,就是我之前刚提交的,请问,这是什么原因?
简单来说是在前一个 action 中创建 token,并 render 到表单页面,在此表单页面将 token 赋值给一个 hidden 的 input,最后在提交的 action 中验证 token 值
jfinal.com 并没有使用上面的解决方案,而是如下方式:
1:提交全部采用 ajax 方式
2:在发送 ajax 前用一个 isLoading 变量,并赋值为 true,然后再发送 ajax 请求
3:当用户在 ajax 请求返回之前,点击提交按钮时,由于 isLoadin 为 true 值,所以不发起请求,也就不会重复提交
4:当用户按 F5 时,显然无法发起提交,因为请求是 ajax 触发的,不是一个表单提交触发的
加入俱乐部 http://jfinal.com/club,可以获取本站 jfinal.com 的所有源代码,各种实用的功能全有