Spring mvc VTL计算或定义对象引用
我想创建一个宏,将字符串作为参数,并将其计算为对象。比如:Spring mvc VTL计算或定义对象引用,spring-mvc,velocity,Spring Mvc,Velocity,我想创建一个宏,将字符串作为参数,并将其计算为对象。比如: #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 为什么我觉得这是评估的本质,不可能做我
#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,是因为我们有相当多的宏将命令绑定路径和命令本身作为参数,我希望后者可以从第一个宏派生出来
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创建一个工具,并在上下文中放置一个实例。工具只是一个普通类,它有一个返回所需内容的方法
e、 g
使用eval方法创建一个对象,然后将其作为referenceEvaluator放入上下文中
#set($obj = $referenceEvaluator.eval($objRef))
如果您避免双重计算,只需在名为$obj的上下文中插入一个执行所需操作的对象,您可能会发现代码更清晰。性能也更好