2019-03-10 22:38

将这部分内容使用 #define 封装成一个函数,例如:
#define menu()
#setGlobal( depth = depth + 1)
#if (depth > 10)
#return
#end

原来的内容
#end

使用时调用该函数即可
#@menu()

这里的关键就是要对这种出现死循环的递归有一个退出条件

2019-03-10 19:10

补充一下,我前面说的一句:“那么它将从 class path 与 jar 包中寻找模板,你的代码要去掉 "/" + PathKit.getWebRootPath() 这一部分,只留最后一部分”

其中的“只留最后一部分”,这个说得不精确,因为你最后一部分包括了:"src/main/java", 显然是错误的

在第四个回复里面已经纠正并给出了代码,你没仔细看:
this.template = "com/jlayui/codegen/model/base_model_template.jf"

2019-03-10 19:06

你得看文档,搞清楚 ClassPathSourceFactory 是怎么用的,不要猜谜:https://www.jfinal.com/doc/6-2

模板加载方式就两种,一是从普通目录加载,一种是从 class path / jar 包加载

2019-03-10 19:02

单步调试:com.jfinal.core.paragetter.UploadFileGetter / FileGetter

2019-03-10 19:01

前面说过了,是从 class path 与 jar 包中寻找模板,那么你的:
this.template = "/src/main/java/com/jlayui/codegen/model/base_model_template.jf";

就相当于是从:"项目根目录/target/classes/src/main/java/com/jlayui/codegen/model/base_model_template.jf" 这里找模板

你确定上面的目录下面真的存在模板文件?

既然说过了是从 class path 或者 jar 包中找,为何不写成:
this.template = "com/jlayui/codegen/model/base_model_template.jf"

2019-03-10 17:37

补充一下,换模板文件可以直接使用 Generator. setModelTemplate("my_model_template.jf") 方法,不必继承

2019-03-10 17:35

src/main/resources 下面的所有文件会被编译器复制到 target/classes 下面去,而 target/classes 是 class path

2019-03-10 17:34

生成器中用到的 Engine 对象有下面的配置:
engine.setToClassPathSourceFactory();

那么它将从 class path 与 jar 包中寻找模板,你的代码要去掉 "/" + PathKit.getWebRootPath() 这一部分,只留最后一部分

注意:建议模板文件放在 src/main/resources 下面,然后可以只填模板文件名。因为 src/main/resources 的资源相当于是 class path

2019-03-10 17:08

UploadFile 与 File 都可以,获取不到是别的原因,多检查代码

2019-03-10 16:42

@libofei 之所以没能支持 sqlite,就是因为它的这些 meta data 信息返回不正确,这个时候就需要你针对性的添加逻辑判断强行给定正确的 columntype

2019-03-10 13:27

跨界写 java 还写得这么好,赞

2019-03-09 23:20

@北流家园网 这样的方法肯定没有几个,你加上两三个算是多的了,试一下就知道了

这个问题是因为新版本的 jfinal 会将带有参数的方法也映射为 action,这个在老版本中是无参的才映射

如果你确实要映射有参的方法为 action,只要保障 actionKey 唯一就可以了

2019-03-09 13:39

用 winrar 打开 jar 包,找一下启动类到底存在不存在,如果存在则再改配置文件,注意字母大小写

此外,注意要双击打包目录下面的 start.bat , 而不要去双击项目根下面的 start.bat

最后,脚本不能使用的问题一定要看文档:
https://www.jfinal.com/doc/1-5

2019-03-08 23:12

找到 getParaToSqlDateTime() 方法,在这个方法上用一个注解:@NotAction

2019-03-08 20:55

注入是有一个链条的: controller =》 service =》 other

或者: controller =》 other =》other

而你的注入并不是起缘于 controller 这个链接,所以无法注入,使用 Aop.get(...) 即可:
Aop.get(...);