2011-12-13 4 views
7

मैंने अभी सीखा है कि अपाचे वेग के साथ निर्देश भी व्हाइटस्पेस में जोड़ते हैं।वेग निर्देश भी व्हाइटस्पेस जोड़ते हैं?

उदाहरण के लिए

तो:

#foreach ($record in $rows) 
#foreach($value in $record) 
$value 
#end 

#end 
इस मैं अंत #foreach बयानों के लिए अतिरिक्त लाइनें हो रही की तरह कुछ के साथ

, #end बयान, आदि

यह नहीं है कि मैं क्या चाहता हूं, इसलिए मैं पाया मैं तो जैसे पंक्तियों के अंत में टिप्पणी ब्लॉक सकता है:

#foreach ($record in $rows)#* 
*##foreach($value in $record)#* 
*#$value #* 
*##end 

#end 

लेकिन यह बहुत पढ़ने के लिए बदसूरत है। क्या मेरे निर्देशों को प्रारूपित करने के लिए वेग इंजन को बताने का कोई तरीका नहीं है?

शायद मैं कुछ और गलत कर रहा हूं?

धन्यवाद।

+0

यह एक चीज है जो हमेशा मुझे वेग के साथ नाराज करती है - मैं इसे जावा उत्पन्न करने के लिए उपयोग करता हूं, इसलिए मैं इसे पीढ़ी के बाद अपने आईडीई में प्रारूपित कर सकता हूं। जेईटी (जावा एमिटर टेम्पलेट्स) इस समस्या से ग्रस्त प्रतीत नहीं होता है। –

+0

ऐसा लगता है कि कुछ लोग बाद में रखे और साफ हो गए, उदाहरण के लिए यह [SO सवाल] (http://stackoverflow.com/questions/2277494/need-a-java-based-html-prettifier-to-clean-up-velocity-generated-html) पीढ़ी के बाद HTML को tidying के संबंध में। –

+0

हम्म, वह बेकार है। मुझे लगता है कि मेरे "काम के आसपास" करना होगा। – javamonkey79

उत्तर

4

मुझे लगता है कि आप इसके साथ अटक कर रहे हैं (Velocity Whitespace Gobbling लेख देखें) हालांकि रेखा टिप्पणियां एक छोटे से tidier होगा:

#foreach ($record in $rows)## 
#foreach($value in $record)## 
$value ## 
#end 

#end 

या आप सिर्फ एक लाइन पर सब कुछ निचोड़ सकता है:

#foreach($record in $rows)#foreach($value in $record)${value}#{end}#{end} 
+0

## मेरे लिए काम नहीं करता है। केवल एक ही लाइन काम पर अपने मैक्रोज़ डालने। कोई विचार यह क्यों होगा? –

1

यह वास्तव में लगभग सभी templating भाषाओं के लिए आम है और तर्क सीधे सरलीकृत प्रसंस्करण से आता है। निम्नलिखित उदाहरण पर विचार (यह वास्तव में जीएसपी Grails द्वारा प्रयोग किया जाता है, लेकिन विचार एक ही है):

<g:each var="x" in="exes"> 
    ${x.y} 
</g:each> 

तरीका यह संसाधित किया जाता है कि पहले कोई टैग (या वेग के मामले में, निर्देशक) है पहचान की। चूंकि टैग/निर्देश में टैग के शरीर को संसाधित करने के लिए निर्देश होते हैं, इसलिए टैग/निर्देश चिह्न हटा दिए जाते हैं और प्रारंभिक चिह्न के तुरंत बाद सभी सामग्री तुरंत समाप्त होने से पहले और अंतिम चिह्न से पहले प्रसंस्करण के लिए लक्ष्य के रूप में उपयोग की जाती है। इसमें सभी व्हाइटस्पेस शामिल हैं, क्योंकि आउटपुट को पहले से साफ करना बहुत मुश्किल होगा।

इसका मतलब यह नहीं है कि आप ऐसा नहीं कर सकते हैं, क्योंकि एडी बताते हैं या यह पहली जगह में सबसे समझदार डिज़ाइन पसंद होगा, लेकिन कभी-कभी चीजों को और अधिक सरल बनाना, मार्कअप - आखिरकार, यदि आपके पास <p>some\ncontent</p> या <p>some\n\n\n\t\tcontent</p> है तो सभी मार्कअप प्रोसेसर वास्तव में परवाह नहीं करते हैं।