Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc VTL计算或定义对象引用_Spring Mvc_Velocity - Fatal编程技术网

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的上下文中插入一个执行所需操作的对象,您可能会发现代码更清晰。性能也更好