Template Engine自定义指令传参问题

代码如下,自定义指令怎么传入变量

#for(temp:[1,2,3])
	#MyDirective(temp)
	###MyDirective(#(temp))
#end
public class MyDirective extends Directive {
	@Override
	public void exec(Env env, Scope scope, Writer writer) {
		super.write(writer, exprList.getExpr(0).toString()+"<br>");
	}
}


评论区

JFinal

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 包下面已有的扩展

TMaize

2017-12-20 12:38

@JFinal 谢谢,文档中没找到,我就直接toString了,结果输出了参数名

热门反馈

扫码入社