2018-12-26 16:20

@静态代码块 jfinal 中的全局拦截分为 controller 层的全局拦截, 以及 controller 层之外的全局拦截,这个 controller 之外的我称之为业务层,并不太贴切

区分一下:
me. addGlobalServiceInterceptor(...)
me.addGlobalActionInterceptor(...) 就好

2018-12-26 16:01

看一下 File not found 这个提示信息中的目录下面,是不是真的有 all.sql 这个文件

你的配置需要改成下面的:
activeRecordPlugin.getEngine().setToClassPathSourceFactory();
activeRecordPlugin.setBaseTemplatePath(null);
activeRecordPlugin.addSqlTemplate("sqls/all.sql");

2018-12-26 15:58

在jfinal 模板里面使用 for 循环跟 java 代码几乎没差别:
#for ( x : list)

#for ( i = 0; i < 10 ; i++)

2018-12-26 15:53

@静态代码块 me.addGlobalServiceInterceptor(...) 这个只针对业务层拦截器,控制层用的是 me.add(...)

2018-12-26 15:52

@fox 这里的本质是通过某种手段记下用户的动作,然后在做日志时根据前面手段中的记录来具体操作

2018-12-26 15:51

@roelay 这个只在开发时需要, 生产环境根本不会用到这个配置,放心使用

2018-12-26 15:49

@亢龙无悔 在本地搭好环境, 单步调是终极办法,这种问题容不得半点猜测

2018-12-26 14:56

看上去是浏览器地址栏直接请求了模板文件, 模板被渲染必须要先走 controller , 然后在 render 中被渲染出来

2018-12-26 14:55

这里的关键在于,你点击测试号 "提交" 的那一刻,要确定请求到达你的项目,并且单步调试一下看程序走向,应该是你的响应数据不对,注意,调试的时候由于响应太慢,微信服务器会认为超时,从而配置不正确

所以,调试仅用于解决问题,此时的配置失败是正常的

2018-12-26 14:51

通过 inv.getMethod().getAnnotation(...) 这种灵活扩展 Interceptor 的方式在 jfinal 文档中都未提及,赞一个这种探索方案

2018-12-26 14:47

使用 outer 这个变量可以获取到上级 for 循环中的变量,例如:
#for ( x : aa )
#for ( y : bb)
#(outer.for.index)
#(outer.for.counter)
#(outer.for.size)
#(aa[outer.for.index])
#(bb[for.index])
#end
#end

看一下文档中有关 for 指令的内容:
https://www.jfinal.com/doc/6-4

2018-12-26 14:42

@fox log.logInfo(...) 是针对你在贴子中提到的下面的这句话:
"后台有记录每次进入的信息, 但发现机器很灵敏,造成进入日志记录有重复"

上面这句话里头有 "日志" 字眼,所以我当成是你要做日志,你只理解成一个抽象动作就好,具体怎么使用看你自己的需求

2018-12-26 14:41

添加一个配置:
undertow.hotSwapClassPrefix=org.beetl.

这个在文档中有过说明

2018-12-26 14:40

@mekain undertow.contextPath=/project-name