velocity 变量 获取_java-在Velocity中获取变量

我有一个插件项目,并且正在使用Velocity模板.用户可以从首选项页面更改模板主体,当用户在首选项页面中单击“确定”时,我想在模板主体中获取变量.我需要帮助从Velocity模板主体中提取变量.

解决方法:

Velocity使用JavaCC解析模板并创建AST.

您只需解析RuntimeInstance即可解析模板.

RuntimeInstance ri = new RuntimeInstance();

SimpleNode node = ri.parse( reader, "templateName" );

现在,您必须根据需要扩展BaseVisitor.

BaseVisitor是所有访客的抽象类.

BaseVisitor具有一种用于节点类型的方法,因此您可以轻松过滤AST节点.

ParserVisitor visitor = new BaseVisitor() {

@Override

public Object visit(final ASTReference node, final Object data) {

//insert here your logic ...

System.out.println(node.getFirstToken();

//use super.visit( node, data) if you need to traverse all node children

return null;

}

};

然后访问该节点…

visitor.visit(node, null);

如果您具有以下模板:

some text $var other text

建议的代码仅打印$var.

请注意,ASTReference是ANY引用.如果您具有以下模板:

some text $var other text

#set( $primate = "monkey" )

该代码将输出:$var和$primate.

标签:velocity,java

来源: https://codeday.me/bug/20191122/2063752.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值