JFinal实现防止数据重复提交

我不怎么会表达,直接上代码吧!

public void add() {
    createToken("blogToken", 30*60); //过期时间设置为30分钟
    render("add.html");
}
	
@Before(BlogValidator.class)
public void save() {
    getModel(Blog.class).save();
    list();
}

 页面的话在你要防止重复提交数据的form中添加

<input type="hidden" name="blogToken" value="${blogToken}" />

接下来你可以在BlogValidator中的

 

protected void validate(Controller c) {
    validateToken("blogToken", "msg", "alert('上次已保存,请不要重复提交')");
}

也可以把validateToken放到action中如果返回true表示不是重复提交!

如果false表示是重复提交,可以

setAttr("msg", "alert('请不要重复提交数据')");
render("xxxx")或者调用list方法
return;

好像还有更方便的用法,请大家自己研究吧。另外,JFinal作者也是很有耐心的,有问必答的那种!

转载于:https://my.oschina.net/wangyongqing/blog/56134

JFinal 是一个基于 Java 语言的极速 WEB + ORM 框架,它的 Configuration 对象用于配置 JFinal 的全局参数。下面是使用 JFinal 实现 Configuration 的示例代码: 1. 创建一个 Config 类,继承 JFinalConfig 类,并实现其中的抽象方法: ``` public class Config extends JFinalConfig { @Override public void configConstant(Constants me) { // 配置常量 } @Override public void configRoute(Routes me) { // 配置路由 } @Override public void configPlugin(Plugins me) { // 配置插件 } @Override public void configInterceptor(Interceptors me) { // 配置拦截器 } @Override public void configHandler(Handlers me) { // 配置处理器 } } ``` 2. 在 Config 类中重写 configConstant() 方法,用于设置 JFinal 的常量: ``` public void configConstant(Constants me) { me.setDevMode(true); // 开启开发模式 me.setEncoding("UTF-8"); // 设置编码 me.setViewType(ViewType.JSP); // 设置视图类型 me.setBaseUploadPath("/upload"); // 设置文件上传路径 me.setMaxPostSize(1024 * 1024 * 10); // 设置最大 POST 大小 } ``` 3. 在 Config 类中重写 configRoute() 方法,用于设置 JFinal 的路由: ``` public void configRoute(Routes me) { me.add("/hello", HelloController.class); // 添加路由 } ``` 4. 在 Config 类中重写 configPlugin() 方法,用于设置 JFinal 的插件: ``` public void configPlugin(Plugins me) { DruidPlugin druidPlugin = new DruidPlugin("jdbc:mysql://localhost:3306/test", "root", "123456"); me.add(druidPlugin); // 添加数据源插件 ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(druidPlugin); me.add(activeRecordPlugin); // 添加 ORM 插件 } ``` 5. 在 Config 类中重写 configInterceptor() 方法,用于设置 JFinal 的拦截器: ``` public void configInterceptor(Interceptors me) { me.addGlobalServiceInterceptor(new MyInterceptor()); // 添加全局拦截器 } ``` 6. 在 Config 类中重写 configHandler() 方法,用于设置 JFinal 的处理器: ``` public void configHandler(Handlers me) { me.add(new MyHandler()); // 添加处理器 } ``` 7. 启动 JFinal: ``` public static void main(String[] args) { JFinal.start("src/main/webapp", 80, "/", 5); } ``` 以上就是使用 JFinal 实现 Configuration 的示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值