2013-06-13 7 views
5

में गतिशील रूप से परिवर्तनीय नामों का निर्माण करें, मैं जानना चाहता हूं कि वैरिएबल का नाम गतिशील रूप से गति का निर्माण करना संभव है या नहीं।वेग

यानी मान लें कि मेरे पास वेग टेम्पलेट [name1, name2, name3 .. name6] में 6 चर हैं। मैं उन्हें आउटपुट करना चाहता हूं। तो मैं की तरह कुछ में देख रहा हूँ:

#foreach ($counter in [1..6]) 
${name${counter}} 
#end 

यह किसी भी तरह संभव है?

उत्तर

9

यह #evaluate निर्देशों का उपयोग संभव है:

#evaluate ('$name1') 

#set ($d = '$') 
#foreach ($i in [1..6]) 
    #set ($varName = "${d}name${i}") 
    #evaluate($varName) 
#end 
+0

धन्यवाद। अच्छा। वह नहीं जानता था। –

+0

@ सर्गी डुमित्रियो एक var में 'मूल्यांकन' के आउटपुट को कैसे रखा जाए? –

+0

@ आमिर अदनान '#set ($ value =" #evaluate ($ varName) ") 'या, चूंकि आप किसी भी वैध स्क्रिप्ट का मूल्यांकन कर सकते हैं:' ''set ($ name1 =' a1 ') #set ($ name2 = 'बी 2') #set ($ name3 = 'c3') #set ($ d = '$') #set ($ h = '#') #foreach ($ i में [1..3]) #set ($ expr = "$ {h} सेट ($ {d} मान = $ {d} नाम $ {i})") # मूल्यांकन ($ expr) $! मूल्य #end '' ' –

5

आप एक नक्शे के निर्माण और मूल्यों आप चाहते हैं पुनः प्राप्त करने के चाबियों का नाम बना सकते हैं:

#set($map = {"${name}1":'value1', "${name}2":'value2'}) 

#foreach ($counter in [1..6]) 
    #set($key = "${name}$counter") 
    $map.get(${key}) 
#end 
+0

मानचित्र ठीक है, धन्यवाद। –

1

यहाँ करने के लिए एक चाल है गतिशील नाम के साथ वेग चर सेट करें।

यदि आप पहले से इस तरह जावा कोड में धुन वेग संदर्भ के लिए प्रबंधन:

VelocityContext context = new VelocityContext(paramsMap); 
context.put("all", paramsMap); 

तो यह इस तरह टेम्पलेट में गतिशील वार्स को परिभाषित करना संभव होगा:

#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 
संबंधित मुद्दे