2010-10-29 18 views
9

¿Cómo uso Rhino devuelva una cadena de Java a JavaScript, lo único que consigue es org.mozilla.javascript.JavaNativeObject cuando usoRhino: ¿Cómo devolver una cadena de Java a Javascript?

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

dentro de mi archivo JS.

¿Es esta la manera correcta de hacerlo?

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

El objetivo es tener un método Java para devolver el objeto String en lugar de crearlo sobre la marcha como se muestra arriba.

+0

No es posible el uso de un simple literal de cadena? 'var jsString =" test ";'? –

+0

si var1 es java.lang.String, de manera sencilla, javascript String es: "" + var1 – qxo

Respuesta

3

En general, se llamarían Context.javaToJS que convierte un objeto Java a su representación más cercana en Javascript. Sin embargo, para objetos String, esa función devuelve la cadena en sí misma sin necesidad de envolverla. Entonces, si siempre devuelve una cadena, no necesita hacer nada especial.

0

Aunque en la mayoría de los casos el tipo devuelto Java String se puede usar como el tipo JS String dentro del código JS, ¡no tiene los mismos métodos!

En particular, encontré que no se puede utilizar en un objeto JS pasado a 'stringify()' ya que no tiene el método toJSON().

La única solución que encontré es hacer explícitamente la adición de "" en el JS, para convertir el Java String en un JS String. No he encontrado ninguna manera de codificar el método Java para volver directamente una buena cadena JS ... (como Context.javaToJS() no convertir una cadena de Java) Ej:

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