2021-06-25 11:53

#define aaa()
aaa#end

2021-06-23 18:15

估计得提供一下需求背景,然后波总会考量。或者自己用的话,可以在base层重写覆盖一下这几个方法

2021-06-23 18:14

没有提供太多参考信息,有点难猜了。
可以用排除定位问题,有几个思路:
1 其他的过程函数是否可以正常调用?
2 MySQL命令行执行的账户是否和java这边账户相同(得看函数代码)?
3 使用JF官网提供的demo去运行一下这个函数,看是否成功调用。
。。。再说吧。。。

2021-06-22 14:10

replace ClassLoader 就是 替换类加载器
调用栈:
config.replaceClassLoader();》
getClassLoaderKit().replaceClassLoader();》
currentClassLoader = new HotSwapClassLoader(classPathUrls, parentClassLoader, hotSwapResolver);
又放置了一个新的空容器去装载新的Class,这样比如一些类里面有成员变量赋值啥的,都会重置,重新加载了

2021-06-22 10:24

UndertowServer 》
doStart() 》
init() 》
configJFinalFilter() 》
Servlets.filter("jfinal", getJFinalFilter()) 》
config.getClassLoader().loadClass("com.jfinal.core.JFinalFilter") 》
.addInitParam("configClass", config.getJFinalConfig()) 》
public JFinalFilter(JFinalConfig jfinalConfig) 》
。。。servlet 》》
public void init(FilterConfig filterConfig) 》
jfinal.init(jfinalConfig, filterConfig.getServletContext()); 》
this.servletContext = servletContext;
this.contextPath = servletContext.getContextPath();

initPathKit();

Config.configJFinal(jfinalConfig); // start plugin, init log factory and init engine in this method
constants = Config.getConstants();

initActionMapping();
initHandler();
initRender();
initOreillyCos();
initTokenManager();
不扒了。大致就这

2021-06-22 10:13

UndertowServer里面有个方法:
private Class<? extends Filter> getJFinalFilter() {
try {
return (Class<? extends Filter>)config.getClassLoader().loadClass("com.jfinal.core.JFinalFilter");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
其中 config.getClassLoader().loadClass 就是调用的HotSwapClassLoader的loadClass
然后JFinalFilter里面又会初始化各个类init方法servlet的知识点了,里面的jfinal.init等等代码,得追着读了

2021-06-21 12:07

@hb963724769 那帖子上的理解没有问题,应该就是最简单的处理方案了

2021-06-18 14:27

任务如果不需要强指定同一执行时间,并且担心数据库性能问题。
那么可以把这些操作放在一个Cron4j任务去调用,单线程去try顺序执行即可。
至于持久化这个概念是Quartz的吧,Cron4j因为入口是Runnable接口的java类,应该是都可以自己操作的吧

2021-06-14 23:12

stream写法提出来,单写一行,把执行结果放入setOrPut就可以,不要使用对象

2021-06-11 14:08

JFinalJsonKit.setToJsonFactory(value -> {
复制 JFinalJsonKit里的转换代码,并根据情况定制自己的代码
return new ;
});

2021-06-11 09:55

jfinal-admin.js 》admin.initLeftMenu(); // 初始化左侧菜单 代码很少,追一下就知道了

2021-06-07 19:21

@jfinal爱好者22 昂,明白你要做什么功能了,一般BaseService层封装查询,我都用Db + Record实现了(通用)。大部分都是取数据,如果需要用到Model的便利方法,可以Record转Model对象就可以了。

2021-06-06 14:31

https://jfinal.com/doc/3-11 手册有写

2021-06-06 01:08

支持,没啥影响,正常用即可 https://jfinal.com/doc/1-8

2021-06-03 21:48

Object ?还是直接就用 问号