我正在尝试使用'for each'循环创建一个速度模板,如此
#foreach ($Key in $!{KeyList})
#if $Key1Function == something, write something #end
#end
我想在迭代循环时改变KeyFunction
的数字。
所以我尝试编写$Key$foreach.countFunction
,$Key{$foreach.count}Function
和$Key{$foreach.count}$Function
,这一切都失败了。
我也尝试过使用#set
(在foreach循环中),即
#set($a = "KeyFunction")
#set($b = "foreach.count") ##(or velocityCount -- same problem)
#set($c = "$a$b")
但现在当我检查$c
时,我得到KeyFunction1
,当我尝试$ this(即$$c
)时,我得到$KeyFunction1
- 我不能让Velocity再次评估。
我尝试过以各种方式使用#evaluate
,但似乎没有做任何事情。
编辑 - 如果它使问题变得更加简单,我可以将$Key1Function
重写为$KeyFunction1
,这可能需要更少的“$”符号才能工作?
任何人都可以帮我解决这个问题的正确语法吗?
由于
答案 0 :(得分:1)
评估不返回值。它只是将内容呈现到输出流中。 VelocityTools中的RenderTool确实返回值。但为此,你不需要那么多的力量。只需将上下文置于其中:
context.put("ctx", context);
并询问它所需的值,使用插值字符串(双引号)来创建键。所以,像这样:
#foreach ($Key in $!{KeyList})
#if ($ctx.get("$Key${foreach.count}Function") == something) write something #end
#end
答案 1 :(得分:-1)
参见http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html#loops,有一个名为$ velocityCount的变量,它包含循环计数器,默认情况下从1开始。
名称和起始值都可以自定义。