2011-03-05 17 views
21

मैं jQuery टेम्पलेट्स के साथ संयोजन में फ्रीमार्कर का उपयोग करने की कोशिश कर रहा हूं।

दोनों ढांचे प्रतिस्थापन के लिए अभिव्यक्तियों की पहचान करने के लिए डॉलर संकेत/घुंघराले ब्रैकेट का उपयोग करते हैं (या जैसे उन्हें फ्रीमार्कर में कहा जाता है, "इंटरपोलेशंस"), उदा। ${person.name}

तो जब मैं उस वाक्यविन्यास में अभिव्यक्तियों के साथ एक jQuery टेम्पलेट को परिभाषित करता हूं, तो फ्रीमार्कर उन्हें समझने की कोशिश करता है (और विफल रहता है)।

मैं ${ अनुक्रम भागने कोई लाभ नहीं हुआ Freemarker के माध्यम से इसे पारित करने के विभिन्न संयोजनों की कोशिश की है - \${, \$\{, $\{, आदि

डॉलर और घुंघराले के बीच में एक freemarker टिप्पणी सम्मिलित करना (जैसे $<#-- -->{expression}) काम करता है - लेकिन मैं एक और संक्षिप्त और सुरुचिपूर्ण समाधान की तलाश में हूं।

क्या चरित्र अनुक्रम ${ आउटपुट करने के लिए फ्रीमार्कर टेम्पलेट प्राप्त करने का कोई आसान तरीका है?

उत्तर

38

इस पर एक नज़र रखना चाहिए $ प्रिंट चाहिए {person.name}:

${r"${person.name}"} 
1

क्या आपने $$ को आजमाया था?

मुझे फ्रीमार्कर मैनुअल से मिला कि ${r"${person.name}"} इसे प्रस्तुत करने के प्रयास किए बिना ${person.name} प्रिंट करेगा।

शायद आप भी Freemarker escaping freemarker

3

हैं ${ अपने ही समस्या है, तो आप में वैकल्पिक सिंटैक्स का उपयोग कर सकता है jQuery टेम्पलेट्स प्लगइन इस तरह: {{= person.name}}

शायद इससे बचने से थोड़ा क्लीनर।

+0

निश्चित रूप से क्लीनर। पारितोषिक के लिए धन्यवाद! –

4

एक और विकल्प #sese = false विकल्प के साथ शामिल करना है। यही है, अपने jQuery टेम्पलेट्स को अलग-अलग शामिल पृष्ठ में रखें और पार्स = झूठी का उपयोग करें ताकि फ्रीमार्कर इसे आज़माकर पार्स न करे।

यह एक अच्छा विकल्प होगा जब टेम्पलेट बड़े होते हैं और इसमें डबल कोट होते हैं।

15

इसके अलावा, यदि आपके पास FreeMarker मार्कअप के बिना लंबे अनुभाग हैं, तो आप <#noparse>...</#noparse> का उपयोग कर सकते हैं।

आप इस समस्या को एक बहुत है, तो आप भी एक TemplateLoader कि सिर्फ एक और TemplateLoader कॉल लागू कर सकते हैं, लेकिन फिर वापस आ पाठ (जो tempalte स्रोत कोड इसके उत्पादन नहीं है,) में यह ${...} के साथ सभी @{...} -s की जगह और सभी ${...} -s ${'$'}{...} के साथ। इस प्रकार आप फ्रीमार्कर इंटरपोलेशंस के लिए @{...} का उपयोग कर सकते हैं। यह लगता है कि यह 100% सही होने के कारण थोड़ा सा ट्रिकियर है, आपको यह पता लगाना था कि विशेष टोकन स्ट्रिंग अक्षर के अंदर कब होते हैं, इस स्थिति में आपको उन्हें प्रतिस्थापित नहीं करना चाहिए। संपादक और आईडीई प्लगइन्स भी अच्छी तरह से खेलेंगे नहीं।

0

मामला है जब आप गैर कच्चे तार का उपयोग करने के लिए इतना है कि आप डबल कोट, अक्षर लोप, आदि बच सकते हैं, तो आप निम्न कर सकते हैं चाहते हैं:

कल्पना कीजिए कि आप स्ट्रिंग $ उपयोग करना चाहते हैं {हैलो} - एक स्ट्रिंग के अंदर "मेरे दोस्त का दोस्त"।आप कच्चे तारों के साथ ऐसा नहीं कर सकते हैं। मैंने जो काम किया है वह है:

${"\x0024{Hello}-\"My friend's friend\""} 

मैं एस्ट्रोफ़े से बच नहीं पाया क्योंकि मैंने डबल कोट्स का उपयोग किया था।

0

मैं पुष्टि कर सकता है कि

${r"${item.id}"} 

एक उदाहरण के रूप सही तरीका है।

तो मैं थोड़े पूर्ण उदाहरण की तरह

<span><a href="/user/user-remove/${r"${item.id}"}"> Remove </a></span> 

दिखेगा और उत्पादन होगा:

<span><a href="/user/user-remove/${item.id}"> Remove </a></span>