2021-03-11 00:28
获取变量是在 Scope 的 get(Object key) 方法中,优先级是 Scope 内的 Map data 高于 shared object,源码在这里:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/template/stat/Scope.java
在 get(Object key) 中设置一个断点,调试一下可以了解更深入
目前在页面直接优先获取 shared object 貌似还没有好办法,不过,你可以通过扩展指令来实现,大致如下:
public class SharedObjectDirective extends Directive {
public void exec(Env env, Scope scope, Writer writer) {
String key = exprList.getExpr(0).toString();
Object value = scope.getSharedObject(key);
write(writer, value.toString());
}
}
最后配置一下:
engine.addDriective("so", SharedObjectDirective.class);
用的时候这样:
#so(site.siteUrl)
2021-03-09 14:25
@杜福忠 同学原因分析得应该挺对,但解决办法可以更简单点,我给一个更省事的办法,步骤如下:
1:在 YourJFinalConfig 中添加一个 onStart() 方法,在这个方法中手动启动 DruidPlugin 与 ActiveRecordPlugin
2:用一个 for 循环加一个try catch 处理一下,代码大致如下:
public onStart() {
DruidPlugin dp = new ...;
ActiveRecordPlugin arp = new ...;
for ( int i = 0 ; i < 10; i++ ) {
try {
dp.start();
arp.start();
} catch ( Exception e) {
Thread.sleep(3000); // 线程睡 3 秒
continue ;
}
}
}
2021-03-05 19:17
@tosur 没这个配置,目前不支持
如果一定要用,可以通过创建多个 Engine 对象,其中一个配置压缩,一个不配置,然后 render 的时候分别使用不同的 engine 对象
enjoy 的 engine 对象是可以分别独立配置使用的