2025-11-21 10:45

@zzutligang 找不到文件,就是baseTemplatePath和fileName参数没设置对了,调试一下就看见了。
建议你们干脆把sql模板全放config目录算了,jar里面别放模板了。有需要修改的时候直接改config目录里面,只有一份文件也不怕找错,JF代码也不用改啥东西。
再说JF启动的sh脚本config 目录在 lib/* 之前,classLoader.getResource(finalFileName)也是优先找config文件了。

2025-11-17 17:44

我们有租户项目是直接把模板内容放到了 数据库,自定义的DbSource,非常适合在线动态管理

2025-11-17 17:40

在模板获取处判断一下就了:
arp.getEngine().setSourceFactory((baseTemplatePath, fileName, encoding) -> {
FileSource fileSource = new FileSource(baseTemplatePath, fileName, encoding);
if (new File(fileSource.getFinalFileName()).exists()){
return fileSource;
}
return new ClassPathSource(baseTemplatePath, fileName, encoding);
});

2025-11-12 15:01

我们是在入库前就处理了,接收json对象时遍历格了一遍

2025-11-12 14:58

https://jfinal.com/doc/6-4
12、#escape 指令
escape 指令用于 html 安全转义输出,可以消除 XSS 攻击。
switch (cur) {
case '<':
w.write("&lt;");
break;
case '>':
w.write("&gt;");
break;
case '"':
w.write("&quot;");
break;
case '\'':
// w.write("&apos;"); // IE 不支持 &apos; 考虑 &#39;
w.write("&#39;");
break;
case '&':
w.write("&amp;");
break;
default:
w.write(str, i, 1);
break;
}

2025-11-05 15:56

@chilun555 对啊,随便反射一个对象共享起来,比如 ParaProcessorController 里面一个index方法, ppc.getDeclaredMethods()[0]

2025-11-05 12:06

创建一个占位和共享的 ParaProcessorController 类对象即可,该类无实际用处,只用于传参占位不报错。
这个是java编程里面常用的解决方式,参数不让用null就创建一个临时对象,需要改造的位置还可以用于对象判断,是否要进行下一步处理之类

2025-10-24 11:54

赞!和我们有个项目类似,但是没有做管理UI没你这精致,是直接在idea项目中用文件夹文件的形式管理,git仓库为版本提交自动更新。我看你是用Magic-Script做动态处理的,我们是用JF的Enjoy SQL模板加扩展功能做的动态处理,做接口等业务确实快的一匹

2025-10-17 15:36

@jfinal009 这里面是业务逻辑的处理,handlerMap 是一个键值的业务bean,在循环业务处理中临时存储需要的上下文数据。
比如:
(JVM优化 建议一个方法是50行内)。
一些简单的业务逻辑处理比如200行内是能阅读的。
当超过500行的业务时,阅读就很费劲了烧脑。一般是需要拆分为多个方法的,基本在一个Service类里面就可以,需要的数据就用 方法的参数相互传递,就能很好的阅读了。
但是业务需要上千行代码处理时,就需要业务bean对象承载业务数据,创建业务对象类,各个类负责相应的小业务块处理。

2025-10-17 00:24

@bensharp 👍 ,查阅了一下资料:
@microsoft/fetch-event-source 是微软开发的 JavaScript 库,用于在浏览器和 Node.js 环境中实现 ​​Server-Sent Events (SSE)​​ 通信。它基于 Fetch API 构建,提供了比原生 EventSource更强大的功能,适用于需要自定义请求头、POST 方法、复杂错误处理等场景。

这个工具在前后分离项目中确实非常有必要,令牌之类的在Authorization自定义头里面,EventSource就没法搞了。
我加到帖子中有需要的可以少绕弯路

2025-10-15 12:00

@北流家园网 你需要 model 对象的解析,只需要在private Object parseKv() 里面再加一个创建回调功能。比如加一个回调函数处理 全局变量,解析时回调 new model对象比用反射创建一个对象要好。 不过 model能做的事情,Record都能做了,比如入库啥的

2025-10-09 16:27

@hb963724769 Controller的action缓存功能我不喜欢用,更喜欢在Service里面对需要的数据进行缓存取值,更方便管理和后续业务维护,并且性能基本和action缓存没太大差别。

2025-10-09 16:15

@hb963724769 CustomerCacheInterceptor 是你们项目自定义的拦截器类,JF内置的是CacheInterceptor类,不过我看代码是差不多的。
你在拦截器里面request.removeAttribute后面,
加一行代码 request.setAttribute("_res", controller.getAttr("_res"));
意思就是不使用缓存的旧res对象,一直使用指定的res对象即可。

2025-09-12 23:20

@happyboy 🐶 波总是aifei.cn 官方网站,我这个aifei.host是预备给学校学生用的PaaS系统,待aifei发布就带领学生军上各种行业管理系统。趁AI还没有那么通吃,目前只是降低了软件门槛,还是需要技师为老板转述需求为功能实现。上最后一波车~ 预估还能吃7年左右软件饭