2019-03-06 14:16

@錢勢惘導 最新的是线上的源码,还没有发布到中心库,使用方法如下:
1:git clone git@gitee.com:jfinal/jfinal.git 命令下载源码到本地
2:cd jfinal 命令跳转到 jfinal 项目的目录下
3:修改 pom.xml 中的 skip 属性为 true
4:mvn clean install 将 jfinal 安装到本地 maven 中
5:将项目中对于 jfinal 3.6 的依赖,版本号改为 3.7-SNAPSHOT

2019-03-06 10:51

越做越好,收藏加点赞

2019-03-06 10:50

@sandyxie 1.8 很普及了,强烈建议升级到 1.8。

1.8 有很重要的功能,性能也好很多

2019-03-06 10:48

用线上最新版,可注入无限的级数,自动判断循环注入

2019-03-05 17:11

@苏坡Man 想获取有序的配置一下:
activeRecordPlugin.setContainerFactory(new OrderedFieldContainerFactory());

2019-03-05 15:44

@maxwade c1 c2 是产品类型,将来出更多类型也方便区分,例如将来出产品,就可以弄成 p1 p2 pn 之类的 produect 的意思

2019-03-05 14:41

仿照 FileRender,写一个 UrlFileRender,一边下载一边往流里面输出即可

2019-03-05 14:39

Record.getColumns() 可以获取到一个 Map,对这个 Map 的 key 进行迭代即可:
for ( String field : Record.getColumns().keySet()) {
...
}

2019-03-05 14:37

缓存 key 的生成策略是千变万化的,jfinal 只能提供一个尽可能简洁的方案,用户需要针对自己的业务添加相应的拦截器去生成 key

具体的实现可以继承 CacheInterceptor ,覆盖里头生成 key 值的方法即可

2019-03-05 14:33

@maxwade 时间数据在订单中基本是确定需要的,我个人还喜欢添加用户 id 进去,很多操作都需要用户 id,这样能大大方便后续展开各种业务

2019-03-05 14:15

第一部分是日期,精确到毫秒,第二部分是订单类型,例如 c1 是指俱乐部(club)订阅 1 年,c2 是指 club 订阅两年,最后一部分是用户的 id 号

生成为类数据,总体上来说就是数据本身包含元信息,从数据中能解读出有用的信息,另一个就是数据不可能重复,可作为唯一值去查询和使用

2019-03-05 14:12

JDK 要使用 1.8 版本,或者更高版本也可以

2019-03-04 13:13

@正负余 多层需求扩展一下为好

2019-03-04 13:01

如果觉得下面这行代码的代码量比较大:
String ret = engine.getTemplateByString("#@comment()").renderToString(kv);

可以做个工具类:
public class TemplateKit {
public static String renderToString(String functionName, Kv kv) {
String fn = "#@" + functionName + "()";
return Engine.use().getTemplateByString(fn).renderToString(kv);
}

上面的 functionName 参数只需要传一个在 template_define.txt 中通过 #define 定义的函数名就可以了,如: "comment"

那么使用的时候就变成了:
Kv kv = kv.by("config", config).set(...);
String ret = TemplateKit.renderToString("comment", kv);
System.out.print(ret);

是不是超级爽?

2019-03-04 12:56

对于 enjoy 的扩展十分深入,赞一个

对于一般的需求还有更简单的使用方式,例如,先将所有模板通过 #define 事先全部定义好,假定文件名为 template_define.txt:

#define comment()
[#(config.title)评论] Re:#(title)
#end

#define commnetReply()
[#(config.title)评论回复] Re:#(reply)
#end

然后通过 engine.addSharedFunction("template_define.txt") 将其添加为共享函数,然后就可以在任意地方使用了:
Engine engine = Engine.use();
Kv kv = kv.by("config", config).set(...);
String ret = engine.getTemplateByString("#@comment()").renderToString(kv);
System.out.print(ret);

好多好玩、简单、方便的用法呢