2010-07-19 12 views
6

मेरे पास "/ testapp" के संदर्भ के साथ एक परीक्षण grails ऐप सेटअप है। जब मैं अपने जीएसपी में एक लिंक जोड़ता हूं तो संदर्भ/यह मेरी grails.app.context की जड़ पर नहीं जाता है, लेकिन मेरी grails.serverURL संपत्ति की जड़ तक जाता है।grails ऐप रूट संदर्भ

उदाहरण के लिए href के साथ "/css/main.css" एक लिंक दिया

मुझे लगता है कि इस लिंक वास्तव में स्थानीय होस्ट में लगेगा उम्मीद करेंगे: 8080/TestApp/सीएसएस/स्थानीय होस्ट के बजाय main.css: 8080/सीएसएस/main.css

क्या कोई तरीका है कि मैं अपने grails.app.context बनाम grails.serverURL पर संदर्भ/संदर्भ प्राप्त कर सकता हूं?

उत्तर

6

सवाल यह है कि आप अपने जीपीएस में अपने लिंक कैसे जोड़ते हैं?

हम जी का उपयोग करके

<link rel="stylesheet" href="${resource(dir: 'css', file: 'stylesheet1.css')}"/> 

और

<g:javascript library="prototype"/> 

की तरह बातें करते हैं: जावास्क्रिप्ट और संसाधन टैग और विधियों, आप के लिए पथ सेट करने के लिए grails बताओ ...

मुझे संदेह है कि आप केवल मानक टैग डाल रहे हैं ...

गोटो

http://grails.org/doc/latest/

और, बाएं हाथ की एनएवी में टैग के अंतर्गत, संसाधन और/या जावास्क्रिप्ट एक विचार प्राप्त करने के लिए (डॉक्स में सीधे लिंक करने के लिए अपनी मुश्किल ... :()

+0

में यह पाया उत्तर के लिए धन्यवाद। हम टैग लाइब्रेरीज़ का उपयोग कर रहे हैं, लेकिन हमारे पास बाहरी पुस्तकालय की स्थिति है जिसमें हार्डकोड/पथ/टू/सीएसएस है जिसे हम नहीं बदल सकते हैं। लगता है जैसे हमें एक काम मिलना होगा। – ibuck

19

उपयोग के लिए देखो पेज

${request.contextPath} 

और फिर अनुरोध contextPath मूल्य यदि पूर्ण url

1

आप शायद संसाधन टैग का उपयोग किया जाना चाहिए के निर्माण के लिए आवश्यक अतिरिक्त मेजबान जानकारी पहले जोड़ें उपरोक्त वर्णित आपकी grails सीएसएस निर्देशिका में। हालांकि, अगर आप भी एक ही टैग का उपयोग कर आप वेब अनुप्रयोग की जड़ संदर्भ खोजने के लिए resource विधि का उपयोग कर सकते हैं:

${resource(uri:'/')} 

तो सिर्फ इतना है कि स्ट्रिंग जहाँ भी इस्तेमाल करते हैं।

0

और जब यह शैली जैसे तत्वों मैं एक साधारण टैग बनाने की सलाह देते हैं कि उन पंक्तियों के साथ चाल, कुछ करूँगा की बात आती है:

class StylesTagLib { 
    static namespace = "g" 

    def stylesheet = { args, body -> 
     out << """<link rel="stylesheet" href="${resource(dir: 'css', file: args.href)}"/>""" 
    } 
} 

और बाद में अपने कोड में पर इस तरह इसका इस्तेमाल:

<g:stylesheet href="main.css"/> 

जाहिर है आप सम्मेलनों के साथ बेला कर सकते हैं (मैं एक पूर्वनिर्धारित फ़ोल्डर इस्तेमाल करना चाहिए? मैं .css एक्सटेंशन अपने आप? इस तरह सामान जोड़ने चाहिए), लेकिन सामान्य विचार एक अच्छी तरह से परिभाषित टैग के पीछे कुरूपता को छिपाने के लिए है।

6

मेरे पास ओपी के लिए एक समान समस्या थी - संदर्भ रूट पर शुरू होने वाले grails फॉर्म लिंक कैसे हैं और सर्वर रूट नहीं है?

आप g: link और g: createLink टैग के लिए "uri" विशेषता का उपयोग करके ऐसा कर सकते हैं।उदाहरण के लिए:

<g:link uri="/login">login</g:link> 

यदि लागू हो किसी भी संदर्भ उपसर्ग जाएगा, और उत्पादन निम्नलिखित

<a href="/login">login</a> if your app is at the http://server/ 
<a href="/testapp/login">login</a> if your app is at http://server/testapp/ 

सुनिश्चित नहीं हैं कि क्यों यह संदर्भ डॉक्स में एक undocumented विशेषता है, लेकिन मैं Javadocs - ApplicationTagLib

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