自定义指令可以获取到#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 这五个变量,基本上可以实现所有功能