2010-11-27 4 views
8

मैं एक पुराने पुराने वसंत एमवीसी अनुप्रयोग में जेएसपी/जेएसटीएल विचारों के बजाय जीएसपी विचारों का उपयोग करना चाहता हूं। मैं इस तरह web.xml करने के लिए एक groovy.servlet.TemplateServlet जोड़ लिया है:ग्रेल्स के बिना सादे स्प्रिंग एमवीसी में जीएसपी विचारों का उपयोग

<servlet> 
    <servlet-name>GroovyTemplate</servlet-name> 
    <servlet-class>groovy.servlet.TemplateServlet</servlet-class> 
    <init-param> 
      <param-name>template.engine</param-name> 
      <param-value>groovy.text.GStringTemplateEngine</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>GroovyTemplate</servlet-name> 
    <url-pattern>*.gsp</url-pattern> 
</servlet-mapping> 

और सेटअप एक स्प्रिंग InternalResourceViewResolver GPS फ़ाइलें लोड करने के लिए। इस बिंदु तक यह सब ठीक काम करता है, लेकिन मॉडल में मानों को टेम्पलेट में बेनकाब करने के लिए मुझे कुछ चालें करना था (टेम्पलेट सर्बलेट को उपclassing और उन्हें ServletBinding में जोड़ना)।

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

क्या जीएसपी का उपयोग करने के लिए एक और (बेहतर) तरीका है जिसमें ग्रेल्स का उपयोग किए बिना एक सादे स्प्रिंग एमवीसी अनुप्रयोग में स्वत: भागने का तरीका शामिल है?

+0

मैं एक समान कार्य पर काम कर रहा हूं। मैं जेएसपी/जेएसटीएल के बजाय जीएसपी टेम्पलेट्स का उपयोग करना चाहता हूं। मुझे अपनी ग्रेडल बिल्ड फ़ाइल में किस निर्भरता को जोड़ना चाहिए? –

उत्तर

0

बजाय एक TemplateServlet का उपयोग कर के, आप भी हो सकता था कि उद्देश्य (मैं, कि परीक्षण नहीं किया सिर्फ Grails पर 'web.xml और वर्ग' कोड देखा) के लिए एक GroovyPagesServlet इस्तेमाल किया।
बाद वाले को स्प्रिंग बीन की स्थापना की आवश्यकता है, जिसे groovyPagesTemplateEngine नाम दिया गया है, और इस मामले में GroovyPagesTemplateEngine (GStringTemplateEngine टाइप किया गया है)।

InternalResourceViewResolver के साथ व्यू परत को कॉन्फ़िगर करना सही है। आपने GroovyPageView असाइन किया होगा।

डिफ़ॉल्ट रूप से जीएसपी HTML आउटपुट से बचने के लिए कॉन्फ़िगर किया गया है। इसे कॉन्फ़िगर करने के लिए, none से htmlConfig.groovy में बदलें। अधिक जानकारी के लिए this article देखें।

+1

मैंने टेम्पलेट सर्लेट चुना क्योंकि वह ग्रोवी का हिस्सा है, ग्रोवीपेज सर्लेट Grails के एक हिस्से की तरह लगता है? GroovyPageView के लिए भी यही है, इसे Grails फ़िल्टर सेट अप करने की आवश्यकता है। मेरी आवश्यकताओं में से एक है Grails शामिल नहीं है, तो मैं केवल जीएसपी समर्थन – Tomas

+1

सहित सबसे दुबला समाधान की तलाश में हूं, अगली बार, कृपया मूल प्रश्न (और बाद में टिप्पणी में नहीं) में अपनी आवश्यकताओं को वाक्यांश दें। यह हमें बहुत से प्रयासों को बचाएगा। - धन्यवाद। - आखिरकार, आपको * आपका * समाधान मिला है (जो ठीक काम करने लगता है), जीएसपी एचटीएमएल से बचने के आपके सबसे केंद्रीय बिंदु पर गलत होने के अलावा। - यह मेरे उत्तर में भी संबोधित किया गया है। - एक बार फिर धन्यवाद। – robbbert

+1

क्षमा करें।- आपके मूल प्रश्न में, आपने "बिना शीर्षक के" शीर्षक (प्रश्न शीर्षक में) का उल्लेख किया है, और मैंने इसे पहचाना नहीं था। - हालांकि, जीएसपी एचटीएमएल से बचने पर आपका शेष प्रश्न हल हो जाना चाहिए। – robbbert

1

आज वसंत बूट के लिए जीएसपी जारी किया गया था। यह नियमित स्प्रिंग वेब एप्लिकेशन में जेएसपी के बजाय जीएसपी का उपयोग करने की क्षमता प्रदान करता है। आप यहां एक उदाहरण देख सकते हैं: https://github.com/grails/grails-boot/blob/master/sample-apps/gsp/script/templates/index.gsp

0

हमने ग्रेल्स से जीएसपी निकाला है, इसे स्प्रिंग एमवीसी अनुप्रयोगों और बेहतर कॉन्फ़िगरेशन समर्थन के लिए अनुकूलित किया है। कृपया हमारे उपकरण Rabbtor देखें। हम इसे ओपन सोर्स नहीं देते हैं, लेकिन उपयोग नि: शुल्क है और हम इसे अपने स्वयं के अनुप्रयोगों में इस्तेमाल कर रहे हैं। स्प्रिंग बूट के लिए जीएसपी स्प्रिंग बूट पर निर्भर करता है, इसे बनाए रखा नहीं जाता है और कुछ टैग लाइब्रेरी Grails पर निर्भर करते हैं। हमने इन निर्भरताओं को हटा दिया, अपनी खुद की कस्टम टैग लाइब्रेरी बनाई जो स्प्रिंग एमवीसी ऐप्स के अनुकूल हैं। अधिकांश टैग लाइब्रेरी समर्थित हैं और स्प्रिंग जेएसपी टैग्स के समान समानताएं हैं। डेटा-बाउंड फॉर्म टैग लाइब्रेरी प्रदान की जाती है और आप अपने टैग libs को भी पंजीकृत कर सकते हैं या संकुल।

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