2010-10-29 13 views
9

Wie verwende ich Rhino einen String aus Java zu Javascript zurückkehren, alles, was ich bekommen ist org.mozilla.javascript.JavaNativeObject wenn ichRhino: Wie man eine Zeichenkette von Java zu Javascript zurückbringt?

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

in meiner js-Datei verwenden.

Ist dies der richtige Weg?

Ziel ist es, eine Java-Methode zu haben, die das String-Objekt zurückgibt, anstatt es im laufenden Betrieb wie oben zu erstellen.

+0

Ist es nicht möglich, zu verwenden, ein einfaches String-Literal? 'var jsString =" test ";'? –

+0

Wenn var1 java.lang.String ist, simpile zu Javascript String ist: "" + var1 – qxo

Antwort

3

Im Allgemeinen versuchen, würden Sie Context.javaToJS aufrufen, die ein Java-Objekt der nächste Darstellung in Javascript umwandelt. Für String Objekte gibt diese Funktion jedoch die Zeichenfolge selbst zurück, ohne sie umbrechen zu müssen. Wenn Sie also immer eine Saite zurückgeben, müssen Sie nichts Besonderes tun.

0

Obwohl der zurückgegebene Java-String-Typ in den meisten Fällen genau wie der JS-String-Typ innerhalb des JS-Codes verwendet werden kann, hat er nicht die gleichen Methoden!

Insbesondere fand ich, dass es nicht in einem JS-Objekt verwendet werden kann, das an 'stringify()' übergeben wurde, da es nicht über die Methode toJSON() verfügt.

Die einzige Lösung, die ich gefunden habe, ist das Hinzufügen von "" in der JS, um die Java-Zeichenfolge in eine JS-Zeichenfolge zu konvertieren. Ich fand keinen Weg, um die Java-Methode zu codieren, einen gut JS String direkt zurück ... (als Context.javaToJS() konvertiert kein Java String) ZB:

var jstr = MyJavaObj.methodReturningAString(); 
JSON.stringify({ "toto":jstr}); // Fails 
JSON.stringify({ "toto": ""+jstr}); // OK 
Verwandte Themen