自定义指令可以获取到#test(id = "abc", num = 5)中的key值id和num吗?使用eval(scope)直接输出了value值abc和5
自定义指令
public class TestTag extends Directive {
@Override
public void exec(Env env, Scope scope, Writer writer) {
try {
for(int i = 0; i < exprList.length(); i++) {
Expr expr = exprList.getExpr(i);
writer.write("<br>" + expr.eval(scope));
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
字符串模板
public void testEngine() {
Template template = engine.getTemplateByString("#test(id = 'abc', num = 5)");
try {
FileOutputStream fos = new FileOutputStream("D:\\testEnjoy.html");
template.render(fos);
} catch(IOException e) {
e.printStackTrace();
}
}
输入内容
<br>abc
<br>5
Integer id = (Integer)exprList.getExpr(0).eval(scope);
Integer num = (Integer)exprList.getExpr(1).eval(scope);
也可以这样来获取:
Object[] values = exprList.evalExprList();
Integer id = values[0];
Integer num = values[1];
在扩展的时候,把玩一下 exprList 、stat、scope、writer、env 这五个变量,基本上可以实现所有功能