2017-12-20 15:55
这种格式下,输出指令会将其当成是属性取值,可以很简单扩展一个输出指令来解决:
import com.jfinal.template.Directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
public class ValueDirective extends Directive {
public void exec(Env env, Scope scope, Writer writer) {
String key = (String)exprList.eval(scope);
if (key != null) {
Object value = scope.get(key);
if (value != null) {
write(writer, value.toString());
}
}
}
}
然后配置一下:
engine.addDirective("value", new ValueDirective());
用的时候注意要这样用:
#value("ZONGJC.0001-DAYFINISH.FINISH");
2017-12-20 12:28
在 MyDirective 的 exec 方法中通过下面代码可以拿到参数:
Object[] paraArray = exprList.evalExprList(scope);
如果只传了一个参数,还可以通过下面代码去拿:
Object para = exprList.eval(scope);
如果希望控制参数的个数,参数类型,可以在 MyDirective 中添加下面方法:
public void setExprList(Exprlist exprList)
通过 exprList.length() 可以得到参数个数,通过 exprList.getExpr(i) instanceof Xxx可以知道参数类型,具体可以参考 com.jfinal.template.ext.directive 包下面已有的扩展
2017-12-20 10:24
@可樂君 jfinal 会检测是否存在相同的 actionKey,确保你的程序不会出 bug,否则请求 /admin 的时候到底该请求哪个
2017-12-19 20:58
有部分的老版本文档,以及 changlog 都是可以下载到的,可以先进入新版本下载页面,试着改一下版本号就可以下载到老版本了。 这个不保证一定可以下载到,但比较近的几个版本还是可以下载到的
jfinal 新版本添加新功能或都有所改变都尽可能考虑了兼容性,而且是渐进式添加,例如 #include 指令以前不支持额外传参,升级到 3.3 以后支持额外传参的同时也兼容了老版本
模板可以在“非当前”路径下引用,但对于默认的 FileSourceFactory 来说,要注意 baseTemplatePath 配置,模板文件必须在这个目录下面或者其子目录下面,可以通过配置 baseTemplatePath 到更加浅层的目录实现加载更多模板的可能性
文件夹引用报错不能有 "/" 这个肯定没问题,模板引擎天然就支持 "/" 打头的目录,一直都在这么用
建议将错误异常贴出来,重点在异常的 cause 部分