2008-10-10 12 views
19

मेरे पास जावा सरणी है जैसे:Velocity के अंदर एक सरणी का उपयोग करने का सबसे अच्छा तरीका क्या है?

String[] arr = new String[] {"123","doc","projectReport.doc"}; 

मेरी राय में पहुंचने का प्राकृतिक तरीका होगा:

 #set($att_id = $arr[0]) 
#set($att_type = $arr[1]) 
#set($att_name = $arr[2]) 

लेकिन यह काम नहीं कर रहा है। मैं इस कामकाज के साथ आया हूँ। लेकिन यह इतना आसान काम के लिए थोड़ा अधिक कोड है।

#set($counter = 0) 
#foreach($el in $arr) 
    #if($counter==0) 
     #set($att_id = $el) 
    #elseif($counter==1) 
     #set($att_type = $el) 
    #elseif($counter==2) 
     #set($att_name = $el) 
    #end 
    #set($counter = $counter + 1) 
#end 

क्या कोई और तरीका है?

उत्तर

8

आप में Arrays.asList(T... a) का उपयोग कर सरणी को लपेट सकते हैं। नई सूची ऑब्जेक्ट को मूल सरणी द्वारा समर्थित किया जाता है, इसलिए यह एक प्रतिलिपि को बर्बाद नहीं करता है। नई सूची में किए गए परिवर्तन भी सरणी पर प्रचारित होंगे।

फिर आप अपनी वस्तुओं को वेग में प्राप्त करने के लिए $list.get(int index) का उपयोग कर सकते हैं।

यदि आपको किसी सरणी से केवल एक या दो वस्तुएं प्राप्त करने की आवश्यकता है, तो आप किसी सरणी से आइटम प्राप्त करने के लिए Array.get(Object array, int index) का भी उपयोग कर सकते हैं।

1

Brian's answer वास्तव में सही है, हालांकि आप यह जानना चाहेंगे कि आगामी वेग 1.6 में सरणी के लिए सीधा समर्थन है; अधिक जानकारी के लिए Velocity documentation देखें।

+1

यह सच है पर उत्तर मिला आशा है। 1.6-बीटा 1 और बाद में, आप अपने सरणी ऑब्जेक्ट्स पर केवल अधिकांश ऐरेलिस्ट विधियों को कॉल कर सकते हैं। जैसे $ array.get (0) $ array.set (0, 'foo') –

21

आप उपयोग वेग का उपयोग कर सकते हैं 1.6: $array नामक सरणी के लिए कोई भी $array.get($index) कर सकता है।

आगामी वेग 1.7 में, कोई $array[$index] (साथ ही $list[$index] और $map[$key]) करने में सक्षम होगा।

0

मैं वेग-tools.jar से ListTool का उपयोग कर समाप्त हुआ। इसमें सरणी के तत्वों तक पहुंचने के तरीके हैं और इसका आकार भी मिलता है।

0

एक अंतर्निहित काउंटर $ वेग है जो मूल्य 1 के साथ शुरू होता है ताकि आपको अपना काउंटर बनाना न पड़े।

2
String[] arr = new String[] {"123", "doc", "projectReport.doc"}; 

मेरी राय में उपयोग करने के लिए प्राकृतिक तरीके से होगा:

#set($att_id = $arr[0]) 
#set($att_type = $arr[1]) 
#set($att_name = $arr[2]) 

इस के लिए मूल्य $array.get("arr", 1) का उपयोग करके प्राप्त किया जा सकता है में $att_id = $arr[0] तरह सरणी से मान प्राप्त करने के लिए कोई सीधा रास्ता है, क्योंकि वेग।
यह काम करता है :)

0

मैं एक ही सवाल है और यह एक और धागा

#set ($Page = $additionalParams.get('Page')) 
#set ($Pages = []) 
#if ($Page != $null && $Page != "") 
    #foreach($i in $Page.split(";")) 
     $Pages.add($i) 
    #end 
#end 

Array indexing in Confluence/Velocity templates

+0

क्या कोई भी इस का उत्तर दे सकता है http://stackoverflow.com/questions/31116553/how-to-append-hash-tables-in-velocity- टेम्पलेट –

संबंधित मुद्दे

 संबंधित मुद्दे