2012-02-07 14 views
9

मैं जीएसपी के अंदर एक समारोह कैसे घोषित कर सकता हूं? मुझे टैगलिब की तरह कुछ चाहिए लेकिन जीएसपी के अंदर घोषित किया गया - इससे कोई फर्क नहीं पड़ता किक्या जीएसपी के अंदर एक समारोह घोषित करना संभव है?

उत्तर

8

आप जीएसपी में विधियों को परिभाषित नहीं कर सकते हैं।

उदाहरण डी:: लेकिन आप गुमनाम कार्यों अगर आप चाहते हैं हो सकता है

<% 
    def prettify = { "***$it***" } 
%> 
<h1>${prettify(someText)}</h1> 

हालांकि इस उदाहरण के लिए, बहुत ज्यादा मतलब नहीं है के रूप में है कि छोटी स्वरूपण inlined जा सकता है। विचारों के लिए किसी भी प्रकार के अतिरिक्त तर्क के लिए, मैं OverZealous recommendation का पालन करता हूं और टैगलिब का उपयोग करता हूं।

+3

मैं मानता हूं कि ज्यादातर मामलों में टैगलिब (या 'जी: रेंडर'' नामक उप-टेम्पलेट सही समाधान हैं। लेकिन कभी-कभी दोहराए गए तर्क का एक छोटा सा हिस्सा है कि जीएसपी में केवल एक बार लिखना अच्छा होता है, लेकिन बाहरी फाइल को ऐसे पदोन्नति की गारंटी नहीं देता है। उन मामलों में, मैं इसे इस तरह लिखना पसंद करता हूं: ' 'डबल curlies '{{}}' पर ध्यान दें जो बंद करने को परिभाषित करता है। फिर आप इसे नियमित फ़ंक्शन की तरह उपयोग करते हैं: '$ {बधाई (" सैम ")}' – Tobia

6

नहीं। बस ऐसा मत करें। यह एक जीएसपी के उद्देश्य के खिलाफ पूरी तरह से है। जीएसपी को विज़ुअल मार्कअप जानकारी को संभालने के लिए डिज़ाइन किया गया है, प्रोग्रामिंग तर्क नहीं। सीधे अपने जीएसपी के भीतर फ़ंक्शंस फेंकना कोड की एक अनजान गड़बड़ी का कारण बन जाएगा।

आप इसे टैग में क्यों नहीं रखेंगे? यह टैग के लिए हैं; इससे कोई फर्क नहीं पड़ता कि यह केवल आपके जीएसपी के भीतर उपयोग किया जाता है। जीएसपी में केवल साधारण प्रदर्शन तर्क और आउटपुट सामग्री होनी चाहिए। पुन: प्रयोज्य कोड हमेशा टैगलिब के भीतर या जटिल तर्क के लिए किसी प्रकार के नियंत्रक या सेवा में निहित होना चाहिए।

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

यदि आप अपने जीएसपी में जेएसपी-स्टाइल टैग (<% %>) का उपयोग कर रहे हैं, तो आप शायद इसे गलत कर रहे हैं।

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

+0

मान लीजिए कि मेरे पास पंक्ति के लिए टेम्पलेट है। यह टेम्पलेट इस जीएसपी के बाहर मीटर नहीं है। जीएसपी के अंदर टेम्पलेट घोषित करना संभव है? –

+0

मैं ' टेम्पलेट का उपयोग' – fixitagain

+0

एक पदानुक्रम की तरह एक छोटे से आंतरिक टेम्पलेट के लिए उपयोगी हो सकता है। – Guillaume

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