2011-04-01 7 views
17

हम फ्रीमार्कर में पहले से बनाए गए अनुक्रम मॉडल उदाहरण में मूल्य कैसे जोड़ सकते हैं?SimpleSequence में मान जोड़ना - FreeMarker

पूर्व के लिए:

<#assign x = ["red", 16, "blue", "cyan"]> 

अब वहाँ एक रास्ता है, मैं ऊपर मेरी सूची में एक और रंग जोड़ सकते हैं: मैं एक सूची (SequenceModel) बनाने के रास्ते नीचे है?

उत्तर

34

आप x और केवल नए तत्व से युक्त एक दृश्य श्रृंखलाबद्ध द्वारा एक नया अनुक्रम बनाने के लिए:

<#assign x = x + [ "green" ] /> 
+0

क्या इसका मतलब है कि फ्रीमार्कर में अनुक्रम भी अपरिवर्तनीय हैं? – Vicky

+1

@ विकी 'अनुक्रम मॉडल' वर्ग में 'add' विधियां हैं, लेकिन इन्हें आमंत्रित करने के लिए वाक्यविन्यास में कुछ भी मौजूद नहीं है। तो मेरा समाधान यह करने का एकमात्र तरीका है (जावा कोड लिखने से कम और इसे पाठ्यक्रम के मॉडल में जोड़ें)। –

+1

हां, अनुक्रम (और हैश) टेम्पलेट भाषा के संबंध में अपरिवर्तनीय हैं। 'SimpleSequence' अनुक्रम कार्यान्वयन में से एक है, और 'SimpleSequence.add' का उपयोग केवल जावा में अनुक्रम * प्रारंभ करने के लिए किया जाना है। – ddekany

13

FreeMarker मूल रूप से एक लिखने-एक बार भाषा है। यह यह असंभव डेटा हेरफेर करने के लिए बनाने के लिए बहुत मेहनत की कोशिश करता है, और कहा कि संशोधित सरणियों या नक्शे, आदि शामिल हैं

आप संयोजन और पुनर्निर्धारण के माध्यम से, इस के आसपास काम कर सकते हैं लेकिन,:

<#assign my_array = [] /> 
<#list 1..10 as i> 
    <#assign my_array = my_array + ["value " + i] /> 
</#list> 

इस में परिणाम चाहिए "मान 10" के माध्यम से "मान 1" युक्त एक सरणी। अगर ऐसा लगता है कि यह सुरुचिपूर्ण लगता है क्योंकि इसका उद्देश्य इस तरह से था। फ्रीमार्कर के विचारधारात्मक परिप्रेक्ष्य से, एक बार जब आप सरणी बनाना शुरू कर देते हैं, तो आप टेम्पलेटिंग भाषा को क्या करना चाहिए और मॉड्यूल, नियंत्रक, सहायक कक्षाओं आदि में जावा कोड में क्या करना चाहिए, उससे आगे बढ़ गए हैं। फ्रीमार्कर में काम करना उतना ही निराशाजनक हो सकता है जितना आप इस दृष्टिकोण से विचलित हो जाते हैं।

http://freemarker.sourceforge.net/docs/app_faq.html#faq_modify_seq_and_map से

:

FreeMarkes खाका भाषा दृश्यों/हैश के संशोधन का समर्थन नहीं करता। यह पहले से गणना की गई वस्तुओं को प्रदर्शित करने के लिए है, डेटा की गणना के लिए नहीं। टेम्पलेट को सरल रखें। लेकिन इसे मत छोड़ो, आप कुछ सलाह और चालें देखेंगे।