2010-10-29 15 views
9

मैं कैसे राइनो जावास्क्रिप्ट को जावा से एक स्ट्रिंग लौटाने का उपयोग करते हैं, सब मैं org.mozilla.javascript.JavaNativeObject है जब मैं अपने js फ़ाइल के अंदरराइनो: जावा से जावास्क्रिप्ट में एक स्ट्रिंग कैसे वापस करें?

var jsString = new java.lang.String("test"); 

का उपयोग करें।

क्या यह करने का यह सही तरीका है?

var jsString = String(new java.lang.String("test")); 

लक्ष्य यह है कि ऊपर की तरह फ्लाई पर इसे बनाने के बजाय स्ट्रिंग ऑब्जेक्ट को वापस करने के लिए जावा विधि है।

+0

नहीं है एक साधारण स्ट्रिंग शाब्दिक? 'var jsString =" test ";'? –

+0

यदि var1 java.lang.String है, जावास्क्रिप्ट स्ट्रिंग के लिए simpile है: "" + var1 – qxo

उत्तर

3

सामान्य तौर पर, आप Context.javaToJS जो जावास्क्रिप्ट में अपने निकटतम प्रतिनिधित्व करने के लिए एक जावा वस्तु धर्मान्तरित कहेंगे। हालांकि, String ऑब्जेक्ट्स के लिए, यह फ़ंक्शन स्ट्रिंग को स्वयं को लपेटने की आवश्यकता के बिना देता है। तो यदि आप हमेशा एक स्ट्रिंग लौट रहे हैं, तो आपको कुछ विशेष करने की आवश्यकता नहीं है।

0

ज्यादातर मामलों में लौटे जावा स्ट्रिंग प्रकार बस जे एस कोड के भीतर जे एस स्ट्रिंग प्रकार की तरह इस्तेमाल किया जा सकता है, यह एक ही तरीके का नहीं है!

विशेष रूप से मैंने पाया है कि यह एक जे एस वस्तु को पारित कर दिया 'stringify()' में नहीं किया जा सकता क्योंकि यह toJSON() विधि नहीं है।

एकमात्र समाधान मैंने पाया स्पष्ट रूप से, जे एस में "" के अलावा कर एक जे एस स्ट्रिंग को जावा स्ट्रिंग में कनवर्ट करने के लिए है। मैं एक अच्छा जे एस स्ट्रिंग सीधे वापस जाने के लिए जावा विधि कोड करने के लिए कोई रास्ता नहीं मिला ... (के रूप में Context.javaToJS() एक जावा स्ट्रिंग परिवर्तित नहीं करता है) उदाहरण के लिए: यह संभव उपयोग करने के लिए

var jstr = MyJavaObj.methodReturningAString(); 
JSON.stringify({ "toto":jstr}); // Fails 
JSON.stringify({ "toto": ""+jstr}); // OK 
संबंधित मुद्दे