首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VTL计算或定义对象引用

VTL计算或定义对象引用
EN

Stack Overflow用户
提问于 2010-10-12 17:06:32
回答 1查看 486关注 0票数 1

我想创建一个宏,它接受一个字符串作为参数,并将其计算为一个对象。类似于:

代码语言:javascript
复制
#macro( valueTest $objRef)
  #define( $obj )#evaluate("$${objRef}")#end
  $obj.foo ## This would have to be translated to $obj.getFoo()
#end

不幸的是,$obj变量没有指向可用于调用方法的对象引用。$obj是一个字符串,$obj.foo不会尝试执行getFoo。

为什么我觉得这就是评估的本质,不可能做我想做的事情。

我之所以要做这样的smth,是因为我们有相当少的宏同时接受命令绑定路径和命令本身作为参数,我希望后者可以从第一个派生出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-21 12:49:12

代码语言:javascript
复制
Unfortunately, Velocity does not have a mechanism to define functions which return object references.  Macros are really intended to be a shortcut to display text.

在这种情况下,继续的方法通常是在Java中创建一个“工具”,并在上下文中放置一个实例。工具只是一个普通的类,其中包含一个返回所需内容的方法

例如:

使用"eval“方法创建一个对象,然后将其作为"referenceEvaluator”放入上下文中。

代码语言:javascript
复制
#set($obj = $referenceEvaluator.eval($objRef))

如果避免双重求值,只需将一个对象插入到执行所需操作的名为$obj的上下文中,您可能会发现您的代码更加清晰。(性能也更好)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3913046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档