2010-10-30 12 views
6

मैं विकेट में एक साइट का निर्माण कर रहा हूं। मुझे अन्य लोगों/वेबसाइटों के लिए सीधे — पढ़ने के लिए एक जावास्क्रिप्ट फ़ाइल, xyz.js की सेवा करने की आवश्यकता है, जो कि मेरे HTML पृष्ठों में से किसी एक में शामिल नहीं है।मैं विकेट से गतिशील जावास्क्रिप्ट फ़ाइल कैसे सेवा कर सकता हूं?

xyz.js को path_info पर आधारित कुछ गतिशील सामग्री की आवश्यकता है जो अनुरोध के दौरान प्रदान की जाती है, इसलिए इसे एक टेम्पलेट होना चाहिए जिसे इंटरपोलेट किया जा सके।

क्या विकेट का उपयोग करके इस जेएस फ़ाइल को बनाने और उसकी सेवा करने का कोई तरीका है?

यदि नहीं, तो सबसे अच्छा वैकल्पिक समाधान क्या है? एक जेएसपी फ़ाइल?

उत्तर

5

संपादित करें: मेरे प्रारंभिक उत्तर में मैंने इस जावास्क्रिप्ट फ़ाइल को सार्वजनिक URL से उपलब्ध कराने की आवश्यकता को अनदेखा कर दिया। उस तरीके के लिए शोध करते समय, मुझे एहसास हुआ कि मेरा पूरा दृष्टिकोण त्रुटिपूर्ण था। इसलिए, मैं अपना मूल उत्तर अंत तक ले जाता हूं और यहां एक अधिक से अधिक बिंदु प्रदान करता हूं।

क्रम में एक सार्वजनिक URL पर एक पाठ संसाधन (जावास्क्रिप्ट या सीएसएस), आप जोड़कर WicketApplication में अपने init() विधि संपादित करने की आवश्यकता को प्रकाशित करने पर:

String resourceKey = "DYN_RES_KEY"; 
//load your text template 
final TextTemplate textTemplate = new PackagedTextTemplate(MyPage.class, "script.js", "text/javascript", "UTF-8"); 
//add the resource 
getSharedResources().add(resourceKey, new Resource() { 
    @Override 
    public IResourceStream getResourceStream() { 
     String queryParam = getParameters().getString("paramName"); 
     //...do whatever you need with the parameters... 
     Map<String,Object> vars = new HashMap<String,Object>(); 
     vars.put("param", queryParam); 
     String stringValue = textTemplate.asString(vars); 
     return new StringResourceStream(stringValue, textTemplate.getContentType()); 
    } 
}); 
//mount the resource at some public URL 
mountSharedResource("/resource", Application.class.getName() + "/" + resourceKey); 
//make alias, optional 
getSharedResources().putClassAlias(MyPage.class, "scripts"); 

अस्वीकरण: इस कोड आईडीई में लिखा और नहीं कर रहा है कभी नहीं भाग गया इस तरह, यह संकलन भी नहीं हो सकता है। फिर भी, यह पूरा करने के तरीके को स्पष्ट करने के लिए पर्याप्त होना चाहिए।

यह उत्तर "Dynamically Generate a CSS Stylesheet" और "Wicket Dynamic Image URL" पर आधारित है, अधिक जानकारी के लिए उन स्रोतों को देखें।

मूल जवाब (उपयोगी आप अपने विकेट पेज में JavaScript या CSS बाहर से संदर्भित फ़ाइल को जोड़ने के लिए है, लेकिन यह सार्वजनिक रूप से दिखाई नहीं कर चाहते हैं): बाहर

चेक विकेट विकी और WICKET-2890 में "Dynamically Generate a CSS Stylesheet" पृष्ठ जिरा में मुद्दा विकेट 1.4.10 के बाद से, TextTemplateResourceReference कक्षा अब विकेट कोर का हिस्सा है, इसलिए आपको इसे कॉपी-पेस्ट करने की आवश्यकता नहीं है।

विकी पृष्ठ सीएसएस पृष्ठ का उल्लेख करता है, लेकिन दृष्टिकोण जावास्क्रिप्ट या किसी अन्य गैर-मार्कअप टेक्स्ट सामग्री के लिए समान है।

+0

हाय, फिर आप किसी अन्य साइट से उस सीएसएस/जावास्क्रिप्ट को कॉल कैसे करते हैं? निर्देश केवल दिखाते हैं कि इसे अपने पृष्ठों पर कैसे शामिल किया जाए। धन्यवाद, टॉम – Tom

+0

मेरा जवाब संपादित किया –

+0

हाय नीम - इसके लिए धन्यवाद - मैं इसे आज़माउंगा। – Tom

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

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