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 层面
2019-05-06 10:31
@年轻人 大致如下:
// 创建一个自己实现的 writer
Writer writer = new MyWriter();
// 将创建好的 writer 放入一个 static 变量,便于随时获取
WriterKit.set(writer);
// 切换 writer
ActionReporter.setWriter(writer);
// 随时获取
Writer writer = WriterKit.get();
2019-05-06 10:00
@qyq1103 tomcat 部署不会理会 mainconfig 中的 main 方法,而是通过 web.xml 中配置的 JFinalFilter 入口启动的