2020-04-15 10:28

sql 文件是在项目启动时一次性读取,并且做完了解析

所以在你实际去使用的时候,仅仅只需要执行 sql 模板,这显然是性能极致的设计

此外,尽可能使用 Db.template(....).xxx() ,不要使用 Db.getSqlPara(...)。只有在必须的时候才使用后者

最后,Model 也有 Model.template(...)xxx() 方法可以使用,节省大量代码,注意看文档:
https://jfinal.com/doc/5-13

2020-04-14 17:35

这个工具很实用,开发微信支付退款功能时用得上,收藏 + 点赞

2020-04-14 17:22

在 jfinal 之上扩展一下很容易,参考这里:
https://jfinal.com/share/361
https://jfinal.com/share/419

2020-04-14 16:23

@e_star 一旦模板引擎提供像 jsp 一样支持直接写 java 代码的功能,立即就会有很多人用上

结局与 jsp 中大量使用 java 代码是一样的,维护起来极端痛苦

view 被抽象成 view ,就是为了专心展示数据的,而不是用来书写 java 逻辑的,复杂 java 逻辑在业务层都写完了

2020-04-14 13:47

@geek206 jfinal redis 插件仅有几个类文件,将之复制到你自己的项目中,然后手动改改就可以的,而且你还可以任意添加新的功能

2020-04-14 11:31

yyy zzz 这类不存在的值也想绑定,通下面的办法
Task task = getBean(Task.class, true);
task.put("yyy", get("task.yyy"));
task.put("zzz", get("task.zzz"));

2020-04-14 11:25

undertow 没有打包功能

下载首页的 jfinal demo ,里面有个文档介绍了如何打成 fatjar 来部署,我猜那个才是你需要的

2020-04-13 17:26

@pandalam ajax 发请求的时候, contentType 还有一个用途是针对上传文件,我记得要设置为:
contentType : false

具体记不清了,这里提出来一下,以便于你将来使用 "ajax 上传文件" 功能时关注这个知识点

其实我本来是对前端的事情不感兴趣,不会关注的,但 jfinal 迭代 9 年,后端极速开发的问题早就解决完了

现在用 jfinal 开发项目 95% 的时间都花在前端上,这让我不得不着手解决前端的问题

jfinal 会为俱乐部会员提供一个用于二次开发的前端解决方案

2020-04-13 17:22

@pandalam getModel、getBean 都是针对表单提交的,不需要这句

此外,要分清 contentType、 dataType 这两个参数的用途,前者是针对发送数据的,后者是针对返回数据的,很多人把后者当成是控制发送数据类型的,从而引发很多问题

2020-04-13 17:08

你需要的代码如下:
$.ajax({
type: "post",
url: "http://localhost/action",
contentType: 'application/json; charset=UTF-8', // 关键参数
dataType: 'json',
data: formToJsonString("表单id"),
success: function(ret) {
}
});

function formToJsonString(formId) {
var paramArray = $('#' + formId).serializeArray();
// 表单参数转 json 对象
var jsonObj = {};
$(paramArray).each(function() {
jsonObj[this.name] = this.value;
});

// json 对象转 json 字符串
return JSON.stringify(jsonObj);
}

其中的 contentType 为 'application/json; charset=UTF-8', 是最关键的参数。这些代码在你 jfinal club 项目的 jfinal-com-4.0.js 中都有

2020-04-13 17:06

parameter 这一样的 key 为 {...} , 注意后面有一个等号 "="

而等号后面是空值,证明你提交数据的方式并不是 http body 中传数据,仍然是表单提交

2020-04-13 10:24

当成是多数据源来使用就可以了,每个用户一个数据源:
https://jfinal.com/doc/5-14

如果是多用户要共享相同的 model , 那么可以用拦截器切换数据源,大至如下:
Connection conn = DbKit.use(configName).getDataSource().getConnection();
DbKit.setThreadLocalConnection(conn);
try {
inv.invoke();
}
finally {
DbKit.removeThreadLocalConnection();
}

注意上面的 DbKit.use(configName) , 这个 configName 参数就对应了不同的数据源,你要想办法动态获取这个值,不同用户登录你是能获取它的账号的,通过账号与数据源建立关联即可

2020-04-12 20:57

@netwild 你这个问题很有代表性,我特此写了一篇分享:
https://jfinal.com/share/2037