2025-10-09 16:08

后端国际化很少用,现在国际化是玩的纯前端,比较省事

2025-09-18 15:17

两个办法任选:

1: 使用 #(user.isDeleted()) 直接调用方法

2: 配置支持 is 方法调用:Engine.addLastFieldGetter(new FieldGetters.IsMethodFieldGetter());

如果偶尔用 isXxx 取值,选第一种,如果经常用,选第二种

2025-09-08 12:37

加个 handler 或者全局拦截器,例如:
public class MyHandler extends Handler {
public void handle(....) {
String method = request.getMethod();
if (method.equals("TRACE") || method.equals("TRACK) {
HandlerKit.renderError404(..);
} else {
next.handle(...);
}
}

2025-09-06 11:28

@北流家园网 热加载的 class load 不同, 获取 class loader 这个会吧?

if (Thread.currentThread().getContextClassLoader().getClass() == HotSwapClassLoader.class) {
热加载模式之下
} else {
...
}

2025-09-06 01:06

@北流家园网 简单来说就是新增一个 /etc/systemd/system/your_project.service

在这个 your_project.service 文件中添加依赖,例如下面是添加了对 mysql 的依赖:
[Unit]
Description=MyApp Service
After=network.target mysqld.service
Requires=mysqld.service

# 其它部分省略

以上的 After、Requires 会让你的应用在 mysql 启动之后再启动。

这个 xxx.service 脚本写完后还要通过 systemctl 让它生效,然后就可以通过如下的方法启动、停止、重启项目了:

systemctl start xxx
systemctl stop xxx
systemctl restart xxx

还可以通过 status 查看状态:
systemctl status xxx

使用 systemctl 还有一个优势,那就是你可以在脚本使你的这个服务在挂掉后自动启动,加个配置即可:
RestartSec = 12s


以下是我在生产环境的一个系统的实际用法:
[Unit]
Description = Stock Service
After = network.target

[Service]
Type = forking
Restart = on-failure
RestartSec = 12s
WorkingDirectory = /opt/app/stock
ExecStart = /opt/app/stock/stock.sh start

[Install]
WantedBy = multi-user.target


注意一下 stock.sh 这个脚本文件,就是 jfinal-club 等等项目中的 .sh 启动脚本,唯一的不同就是里头的 java 命令要使用全路径,例如:

/opt/jdk_1.8/bin/java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &
而不能是: java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &

也就是说,主要的脚本,jfinal club 中已经帮你写好了,你只需要写 xxx.service 这个 systemctl 要求的脚本即可,这个脚本的写法非常简单,可以直接参考我上面的例子。

2025-09-05 17:36

启动都用 systemctl 管理,脚本里头可以配置依赖次序,具体问一下 GPT

2025-09-05 00:58

用 CPI : CPI.getAttrs(model);

2025-09-03 12:38

@杜福忠 那应该已薅满,aifei.cn 上线正好用上,nice

2025-09-03 02:51

已薅,一共领了四个,最多只能领四个吗?

2025-08-28 17:50

AutoTableBind 是第三方出的扩展,jfinal 官方一直没有这个,可以通过生成器自动生成,下载官方 blog 项目参考一下

2025-08-18 13:50

不要开启 fastMode 就行:
engine.setFastMode(...) 这个配置不要加,或者:engine.setFastMode(false)

2025-08-15 02:31

@shenbaise 今天还有同学正好用上了这个功能,配置一下 undertow.resourcePath 即可:

按照官方给的配置文件来配置:
https://gitee.com/jfinal/jfinal-undertow/blob/master/undertow.txt

2025-08-06 12:15

@jFinal用户0028 这个不变动项目本身,只是启动方式改一点点而已

jfinal undertow 支持所有 jfinal 版本

2025-08-05 23:27

太老了,直接换 jfinal-undertow :
https://gitee.com/jfinal/jfinal-undertow

在官网下载现成的 demo,用上里头的 po.xml 直接换掉,在 idea 下非常方便,不必折腾 eclipse:
https://jfinal.com/download/now?file=jfinal_demo_for_maven-5.0.0.zip

2025-07-15 17:19

@江yu jetty 这都多少年前的事了, jfinal undertow 可以让开发、生产一体化,省心、省时