2011-05-25 12 views
25

में किसी सरणी के माध्यम से बनाएं और पुनरावृत्त करें VTL में सरणी कैसे बनाएं और सरणी में सामग्री कैसे जोड़ें? इंडेक्स द्वारा सरणी की सामग्री को कैसे पुनर्प्राप्त करें?Velocity टेम्पलेट भाषा

उत्तर

0

मैंने वीटीएल में एक सरणी नहीं बनाई है लेकिन वीटीएल संदर्भ में सरणी पारित की है और उनका उपयोग किया है। VTL में, आप सूचकांक द्वारा सरणी सामग्री को पुनः प्राप्त नहीं कर सकते हैं, आप केवल foreach का उपयोग करें, उदाहरण के रूप में इस कोड को मेरी गतिशील एसक्यूएल पीढ़ी VTL स्क्रिप्ट से नकल है:

#foreach($col in $Columns) SUM($col.DBColumn) AS ''$col.Name''#if($velocityCount!=$Columns.Count), #end #end 

इस कारण से, हम भी 2 डी सरणियों नहीं हो सकता। जब मुझे लगातार 2 वस्तुओं को स्टोर करने के लिए एक सरणी की आवश्यकता होती है, तो मैंने एक नई कक्षा को परिभाषित करने के कामकाज का उपयोग किया, और उस वर्ग की वस्तुओं को एकल आयामी सरणी में डाला।

40

Apache Velocity User Guide के अनुसार, कार्य की दाहिने हाथ की ओर प्रकार के हो सकते हैं

  • चर संदर्भ
  • सूची आइटम
  • स्ट्रिंग शाब्दिक
  • संपत्ति संदर्भ
  • विधि संदर्भ
  • संख्या शाब्दिक
  • Arr ayList
  • मानचित्र

आप की तरह एक अभिव्यक्ति के साथ, एक खाली सूची है, जो एक सरणी के लिए अपने सभी जरूरतों को पूरा करेगा बना सकते हैं एक अपाचे वेग टेम्पलेट में:

#set($foo = []) 

या मूल्यों को प्रारंभ:

#set($foo = [42, "a string", 21, $myVar]) 

तो, जावा का उपयोग कर तत्वों को जोड़ने जोड़ने विधि:

$foo.add(53); 
$foo.add("another string"); 

लेकिन सावधान रहें, क्योंकि सूची प्रकार के लिए जावा .add() विधि एक बूलियन मान देता है, जब आप सूची में कोई तत्व जोड़ते हैं, तो वेग प्रिंट करेगा, उदाहरण के लिए, "सत्य" या "झूठा" "एड" फ़ंक्शन का नतीजा।

<span>$foo[1]</span> 

अभिव्यक्ति के ऊपर दिखाए:

#set($bar = $foo.add(42)) 

आप सूचकांक का उपयोग कर सूची के तत्वों का उपयोग कर सकते हैं:

एक साधारण काम के चारों ओर एक चर करने के लिए ऐड समारोह का परिणाम बताए है पाठ "एक स्ट्रिंग" के साथ एक अवधि। हालांकि सूची के तत्वों तक पहुंचने का सबसे सुरक्षित तरीका foreach loops का उपयोग कर रहा है।

+0

नोट कि हालांकि $ foo.add (53); दस्तावेज़ में 'सत्य' या 'झूठी' प्रस्तुत करता है। इसे रोकने के लिए आपको इसे #if में लपेटना होगा। – sproketboy

+0

सही या गलत प्रस्तुत करने के लिए केस पहले से ही उत्तर में शामिल किया गया था। –

+0

ओह हाँ क्षमा करें। मुझे अभी एहसास हुआ। आप इंडेक्स पैरामीटर के साथ ऐड विधि का उपयोग कर सकते हैं जो शून्य लौटाता है। – sproketboy

3

एक सरणी बनाना आसान है:

#set($array = []) 

एक सरणी में एक तत्व लाना भी आसान है:

$array.add(23) 

एक तत्व हो रही एक सरणी से अपने वेग संस्करण से निर्भर करता है। वेग 1 में।6 आप का उपयोग करना चाहिए

$array.get($index) 

वेग 1.7 जब से तुम क्लासिक फार्म का उपयोग कर सकते हैं:

$array[$index] 
संबंधित मुद्दे