我想知道是否可以動態地將變量的名稱構建爲速度。以速度動態構造變量名稱
即可以說我有6個變量到velocity模板[name1,name2,name3 .. name6]我想輸出它們。 所以我在尋找類似:
#foreach ($counter in [1..6])
${name${counter}}
#end
是否有可能以某種方式?
我想知道是否可以動態地將變量的名稱構建爲速度。以速度動態構造變量名稱
即可以說我有6個變量到velocity模板[name1,name2,name3 .. name6]我想輸出它們。 所以我在尋找類似:
#foreach ($counter in [1..6])
${name${counter}}
#end
是否有可能以某種方式?
它使用#evaluate
指令是可能的:
#evaluate ('$name1')
#set ($d = '$')
#foreach ($i in [1..6])
#set ($varName = "${d}name${i}")
#evaluate($varName)
#end
您可以構建一個地圖,並建立了鍵的名稱來檢索所需的值:
#set($map = {"${name}1":'value1', "${name}2":'value2'})
#foreach ($counter in [1..6])
#set($key = "${name}$counter")
$map.get(${key})
#end
地圖是好的,謝謝。 –
這裏有一個竅門用動態名稱設置速度變量。
如果你能調整速度方面事先在這樣的Java代碼:
VelocityContext context = new VelocityContext(paramsMap);
context.put("all", paramsMap);
那麼就可以定義模板動態VAR是這樣的:
#set($dynamicDef = "varName=varValue")
#set($dynamicName = $dynamicDef.substring(0, $dynamicDef.indexOf('=')))
#set($dynamicValue = $dynamicDef.substring($dynamicDef.indexOf('=')).substring(1))
## create var with dynamic name
$all.put($dynamicName, $dynamicValue)
,並在以後使用它們像這樣:
#if ($varName)
varName=$varName ## prints varName=varValue
#end
謝謝。不錯。不知道。 –
@Sergiu Dumitriu如何把'evaluate'的輸出放在var中? –
@AamirAdnan'#set($ value =「#evaluate($ varName)」)'或者因爲您可以評估任何有效的腳本:'#set($ name1 ='a1') #set($ name2 = '$ b3') #set($ name3 ='c3') #set($ d ='$') #set($ h ='#') #foreach($ i in [1..3] ) #set($ expr =「$ {h} set($ {d} value = $ {d} name $ {i})」) #evaluate($ expr) $!value #end ''' ' –