2010-04-24 16 views
8

से जावास्क्रिप्ट फ़ंक्शन कॉल करें मेरे पास जावास्क्रिप्ट फ़ंक्शन (बहुत बड़ा है!) है कि मुझे जावा (ग्रोवी) कक्षा में इसकी कार्यक्षमता की आवश्यकता है। यह एक साधारण कैलेंडर कनवर्टर है। मैं इसे groovy में फिर से लिख सकता हूं लेकिन सिर्फ यह जानना चाहता हूं कि जावा (groovy) विधि से जावास्क्रिप्ट फ़ंक्शन को कॉल करना संभव है या नहीं? मुझे लगता है कि सेलेनियम और कैनू जैसे कार्यात्मक परीक्षण पुस्तकालयों में ऐसा कुछ होना चाहिए, क्या मैं सही हूँ? पीएस: मैं अपने जेएस रनटाइम एनवी का उपयोग करने के लिए एक असली दुनिया ब्राउज़र जागना नहीं चाहता।जावा (ग्रोवी) कक्षा

धन्यवाद,

उत्तर

8

अन्य उत्तर में उल्लेख किया है, यह

जावा 6. से Scripting APIjavax.script पैकेज के भाग के रूप में प्रदान की, उपलब्ध का उपयोग करने के बाद एक ग्रूवी उदाहरण जो जावास्क्रिप्ट का एक छोटा सा निष्पादित करता है संभव है:

import javax.script.* 

manager = new ScriptEngineManager() 
engine = manager.getEngineByName("JavaScript") 

javascriptString = """ 
obj = {"value" : 42} 
print(obj["value"]) 
""" 

engine.eval(javascriptString) // prints 42 

यह जब पटकथा एपीआई का उपयोग कर जावास्क्रिप्ट निष्पादित करने के लिए एक ब्राउज़र कॉल करने के लिए आवश्यक नहीं है, लेकिन एक ध्यान में रखना चाहिए कि ब्राउज़र-विशिष्ट सुविधाओं (शायद डोम से संबंधित कार्यक्षमताओं) उपलब्ध नहीं होगा।

0

आप Rhino, जावा में जावास्क्रिप्ट भाषा के एक कार्यान्वयन का उपयोग कर सकते हैं। यहां calling JavaScript function from java का उदाहरण दिया गया है, लेकिन आप इसे ग्रोवी से भी कर सकते हैं।