2020-09-24 17:56

@zzutligang 做一个 RedisKit 工具类,封装一下常用的一些 api,内部通过 jfinal 的 Redis 来获取需要的 jedis,实现所需功能:

public class RedisKit {
public void lpush(...) {
Jedis jedis = Redis.use().getJedis();
try {
jedis. lpush(...);
} finally {
jedis.close();
}
}
}

2020-09-24 15:06

确保序列化与反序列化算法一致

jfinal reids plugin 存数据前都会前数据进行序列化,默认使用 fst 序列化,那么你用别的工具拿数据时,也得用 fst 的算法反序列化

序列化以后的数据会多出一些表示数据本身特征的数据

通过 setSerializer(...) 可以配置自己的序列化算法

2020-09-23 17:23

@拿云 添加一个配置:
UndertowServer.create(MyApp.class)
.addHotSwapClassPrefix("cn.hinglo.activemq.plugin.")
.start();

文档中有说明:
https://jfinal.com/doc/1-5

2020-09-23 16:06

主动调用会更好,因为连接池会告诉数据库服务端客户端这边关闭掉了,否则服务端需要通过某种机制去关闭与客户端的连接,在此之前有一定的资源占用

2020-09-23 16:04

设计理念决定了用户体验

2020-09-23 16:04

Db.java 中的功能使用很方便,当初制的设计理念就是一步到位,也就是一行代码解决问题,所以你会看到都是这么用的:
Db.find
Db.save
Db.template(...).find
Db.batch

2020-09-23 16:02

用大扩号占位需要配置为 slf4j,或者 logback:
configConstant(Constants me) {
me.setToSlf4jLogFactory());
}

注意要添加其依赖

如果不配置的话,可以通过 %s 作为占位字符:
log.info("name:%s,phone:%s,idcard:%s已存在!",name,phone,idcard);

因为 jfinal 默认用的 log4j ,底层用的 String.format(...):
https://blog.csdn.net/anita9999/article/details/82346552

2020-09-23 15:23

setBaseDefaultName 我记得只是指定文件名的前缀,例如:
i18n_en-US.properties、 i18n_zh-CN.properties 这两个文件使用的前缀是 "i18n"

通过 setBaseDefaultName 可以改变这个前缀,一般不用修改,你碰到的或许主要是目录的问题,你配置的是 setBaseDefaultName("i18n/i18n") , JDK 可能将这个值当成了文件名

最后,你的最后一个 i18n_zh_TW.properties 好像是缺了一个下划线

2020-09-23 15:20

@sky浪翻云 这个问题最快的解决办法是找一找 JDK 有关 i18n 的文档,里头的用法本质上都是 JDK 给定的规则,很久不玩这个不记得

2020-09-23 12:13

@鼻涕刘o0 还真是,问题问的是 enjoy 不是 jfinal。 一眼扫过去太快

2020-09-23 11:17

@rirai undertow 给了报了异常,并没有当机,说明 undertow 可以识别这类攻击, undertow 相当好用

2020-09-23 11:15

刚试了一下,可以的,你再试一试

2020-09-23 10:17

注意,这个配置是分模块的,你可以在子的 Routes 中分别配置,互不影响

2020-09-23 10:16

添加一个配置:
configRoute(Routes me) {
me.setMappingSuperClass(true);
}

如果不配置,则无法映射父类中的路由,这个是在较新版本中的改进,目的是为了提升映射的性能

2020-09-22 20:06

检查 fatjar 中的 i18n 目录是否将资源文件打进去了

此外,setBaseDefaultName 可能有问题,很久没玩 i18n , 细节不记得

最后,“为什么这里要写i18n的baseName这样写,在本地开发环境才有效?” 这些问题,其实并不是 jfinal 制定的规则,完全按照 java 官方的规范走的,jfinal 只做一个易用性封装