2019-01-10 15:26

jfinal 不会理会你传入的到底是什么 sql + paras,只要 JDBC 可以执行你的这些就可以

2019-01-10 15:24

外面套一个 select * from ( 原 sql ) as temp 即可

sql 要多复杂就可以有多复杂,因为你的 sql 是直接扔给 JDBC 执行的, jfinal 可不管你的 sql 有多复杂这件事

此外,你没仔细看文档,这个事文档里面早就详细说明过:
https://www.jfinal.com/doc/5-6

注意看常见问题部分

2019-01-10 12:26

目前我建议你先创建一个 MyServer extends UndertowServer,覆盖掉 doStart() 方法,然后用上你自己改进的这个 HotSwapWatcher

可以先建一个 MyHotSwapWatcher extends HotSwapWatcher ,覆盖掉其中的相关方法进行改造

2019-01-10 12:14

你 pull 的代码不能直接合并,这段代码极为精密,细节极多。 你的改进我会先分析,找出一个最好的方案后再改进

谢谢你的支持

2019-01-10 12:11

@lyf78062919 看到你的这个分析,这个情况应该是 IDEA 进行的是 build 动作,而不是 make 动作, make 与 build 是有很大差别的:make 只编译改变过的源代码,builder 是对整个源码进行编译

此外,还有一个 compile , 这个是对指定的源代码进行编译,无论源代码有没有被个改过

因此,在开发阶段,最划算最合理的是要实现 auto make,或者叫 auto compile 也可以,build 动作会删除所有被编译的 class 文件然后编译所有源码

2019-01-10 11:50

#for 指令可以对 List、数组、Map、Set 等类型迭代,不能对 String 内部的数据进行迭代

你的 json 变量看上去是一个 String 类型,将其转换成 Map 类型再迭代即可, 文档中说得很清楚

2019-01-10 11:48

或许 inv.getViewPath() 就是你想要的值,该值是 baseViewPath + viewPath 形成的

2019-01-10 11:47

baseViewPath 只存在配置阶段, jfinal 启动时,会将 baseViewPath 与 viewPath 进行拼接,无法通过简单手段去获取 baseViewPath

可以在拦截器中通过 inv.getViewPath() 获取拼接后的 viewPath

如果上面这个 viewPath 不是自己想要的,可以在 YourJFinalConfig 中将 Routes me 这个对象用 static 存起来,然后在别的地方使用

2019-01-10 11:44

renderJson 不会去找文件,也不需要找文件,所以 FileNotFoundException 这个异常在正确使用的情况下不可能出现

可能的原因是你的拦截器中没有走 inv.invoke() 这行代码,造成 renderJson() 根本没被调用,单步调试确认一下

2019-01-10 11:42

Model 体系内才有 attr 这一说,而 Db + Record 模式是没有与数据表进行过映射的,所以里头的 API 需要自己来控制字段的正确

2019-01-09 17:40

应该是配置不对,下载本站首页的 jfinal demo for maven,拿到里头的 pom.xml 与 package.xml 用上就好

2019-01-09 16:54

看打包时的控制台有没有出现异常,如果没有异常,看 package.xml 中有没有配置输出 zip

2019-01-09 16:28

异常 cause 部分呢?

2019-01-09 15:40

engine.getTemplateByString(...).render(...) 即可

也可以扩展 ISource , 出来个 DbSource implements ISource,然后:
engine.getTemplate(new DbSource(...)).render(...);