2012-02-15 11 views
14

वैडिन जावा वेब एप्लिकेशन फ्रेमवर्क है, इसलिए क्या वैडिन जावा कोड में jQuery जावास्क्रिप्ट स्निपेट डालना संभव है?क्या वाडिन ढांचे के अंदर jQuery का उपयोग करना संभव है?

+1

मुझे नहीं लगता कि क्यों नहीं, लेकिन मुझे नहीं लगता कि आप क्यों चाहते हैं ... निश्चित रूप से ढांचा अलग दृश्य और नियंत्रक के लिए अनुमति देता है? – bdares

+0

ढांचा मूल जेएस कोड का उपयोग करने के लिए कस्टम घटक प्रदान करता है। हालांकि, जब मैंने कुछ जटिल जेएस कोड की कोशिश की, तो शायद कुछ भी नहीं हुआ। यही कारण है कि मैंने इस तरह के सवाल पूछा। – Kyleinincubator

उत्तर

9

हां यह है।

इस तरह अपने खुद के ApplicationServlet विस्तार वर्ग बनाएँ:

public class MyApplicationServlet extends ApplicationServlet { 

    @Override 
    protected void writeAjaxPageHtmlVaadinScripts(Window window, 
      String themeName, Application application, BufferedWriter page, 
      String appUrl, String themeUri, String appId, 
      HttpServletRequest request) throws ServletException, IOException { 

     page.write("<script type=\"text/javascript\">\n"); 
     page.write("//<![CDATA[\n"); 
     page.write("document.write(\"<script language='javascript' src='./jquery/jquery-1.4.4.min.js'><\\/script>\");\n"); 
     page.write("//]]>\n</script>\n"); 

     super.writeAjaxPageHtmlVaadinScripts(window, themeName, application, 
      page, appUrl, themeUri, appId, request); 
    } 
} 

फिर अपने web.xml में Vaadin सर्वलेट की जगह (डिफ़ॉल्ट com.vaadin.terminal.gwt.server.ApplicationServlet है):

<servlet-class>com.example.MyApplicationServlet</servlet-class> 

फिर आप कर सकते हैं jQuery कॉल कॉल करके अपने कोड में:

MyApplication.getMainWindow().executeJavascript(jQueryString); 
+0

जैसा कि मैंने कोशिश की, इस पंक्ति का कोड: MyApplication.getMainWindow()। ExecuteJavascript (jQueryString); केवल कुछ सरल जावास्क्रिप्ट कोड के लिए काम कर सकता है। ऐसा लगता है कि अधिक जटिल जेएस कोड का समर्थन नहीं करना है। – Kyleinincubator

+0

मैं jQuery को अच्छी तरह से नहीं जानता, लेकिन कम से कम मेरे वाडिन एप्लिकेशन में इसका उपयोग इनवेंट चार्ट (हाइचार्ट्स पर आधारित) द्वारा किया जाता है। यदि आपने अपनी jQuery सामग्री को जेएस फ़ाइल में घोषित किया है, तो यह आपके लिए काम करेगा, इसे पेज शीर्षलेखों (जैसे jQuery.js) में डालें और निष्पादित जावास्क्रिप्ट के साथ अपने कार्यों को बुलाया? और इसके अलावा, क्या आपने (w/firebug या इसी तरह) जांच की है कि jQuery लाइब्रेरी सफलतापूर्वक लोड की गई थी? – miq

+1

इसके अलावा, इस उदाहरण को देखें: http://vaadinjquery.appspot.com/ – miq

3

एक और custo ApplicationServlet के लिए mizing:

JavaScript.getCurrent().execute("...javascript code here...") 

बड़ा स्क्रिप्ट के साथ सावधान रहें:

public class VaadinApplicationServlet extends ApplicationServlet { 

    @Override 
    protected void writeAjaxPageHtmlHeader(BufferedWriter page, String title, String themeUri, HttpServletRequest request) throws IOException { 
     page.write("<script language='javascript' src='http://code.jquery.com/jquery-1.8.0.min.js'></script>"); 
     super.writeAjaxPageHtmlHeader(page, title, themeUri, request); 
    } 

} 
5

आप @JavaScript और @StyleSheet एनोटेशन

@StyleSheet({ 
       /* 
       * JQuery UI 
       */ 
       "vaadin://jquery/jquery-ui-1.9.2.custom/css/ui-darkness/jquery-ui-1.9.2.custom.min.css", 
}) 

@JavaScript({ 
       /* 
       * JQuery 
       */ 
       "vaadin://jquery/jquery-1.11.1.min.js", 

       /* 
       * JQuery UI 
       */ 
       "vaadin://jquery/jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.min.js", 
}) 

public class MyUI extends UI { 
... 
} 

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

+0

फ़ाइलें कहां करें (उदा। '/ Jquery/...') पर जाएं? परियोजना में किस फ़ोल्डर में? – luckydonald

+0

फ़ाइलें एप्लिकेशन के "VAADIN" फ़ोल्डर में जाती हैं जिन्हें "vadin: //" url द्वारा एक्सेस किया जा सकता है – d2k2

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