2019-05-07 12:22
注意一下 configEngine 中的配置是与 undertow 的静态资源配置无关的
configEngien 中的 me.setToClassPathSourceFactory(),是指定 enjoy 引擎去 class path 或者 jar 包中寻找 模板文件,这里与静态资源无关,只找模板文件
而 me.setBaseTemplatePath("webapp"),是在找模板的时候,先给定一个前缀路径,相当于这个路径是配合 getTemplate(String fileName) 中的 fileName 生成一个: baseTemplatePath + fileName
注意区分这几者,不要混杂这些概念就好解决
2019-05-07 10:06
@haoran789 我看到你有一个 new RoleController()
controller 的 new 是要交给 jfinal 的, new 出来以后要初始化,否则是用不了的
例如,你在 new 出来的 RoleController 中使用了 setAttr 方法,而这个方法底层是用的 request.setAttribute(....), 而 request 是 null, 所以会引发 NPE
因此,我前面讲的,通过单步调试分分钟就可以定位到是 setAttr 用到底层的 requset 对象为 null 值
2019-05-06 15:40
@absir 字符 # 可以直接输出,不需要转义,例如:
#abc
再例如:
##
你的代码之所有碰到这个问题,是因为字符 # 后面紧跟了一个 enjoy 关键字,例如:
#if
#for
#end
如果确实要原样输出这些代码,可以有下面这些办法,选其一:
1:在字符 # 与关键词之间换行,例如:
#
if(edit && edit.allowPath('#(att.path)'))")
2:用输出指令输出,例如:
#("if(edit && edit.allowPath('#(att.path)'))")
当然,也可以只输出一小部分内容:
#("#if") (edit && edit.allowPath('#(att.path)'))
甚至像你的代码中类似,只输出一个字符:
#("#") if (edit && edit.allowPath('#(att.path)'))
3:用原样输出将需要的地方包起来,例如:
#[[
#if (...)
...
]]#
最简单就是第一种方式,回车一下搞定
2019-05-06 12:25
@hxu 这里的重点是,jfinal 的数据库操作是对 JDBC 的极薄封装,性能在理论上接近 JDBC,性能的问题需要从别的方面优化,而不是 jfinal 层面