2010-10-29 154 views
9

如何使用犀牛從Java返回一個字符串到JavaScript中,當我使用Rhino:如何從Java返回一個字符串到Javascript?

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

我的JS文件中我得到的是org.mozilla.javascript.JavaNativeObject

這是正確的做法嗎?

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

目標是讓Java方法返回String對象,而不是像上面那樣快速創建它。

+0

是不是有可能使用一個簡單的字符串? 'var jsString =「test」;'? – 2010-11-12 10:24:42

+0

if var1 is java.lang.String,simpile to javascript String is:「」+ var1 – qxo 2017-08-15 12:28:56

回答

3

一般情況下,你會打電話Context.javaToJS其中一個Java對象轉換爲在Javascript其最接近的表示。但是,對於String對象,該函數本身返回字符串,而無需將其包裝。所以如果你總是返回一個字符串,你不需要做任何特別的事情。

0

儘管在大多數情況下,返回的Java String類型可以像JS代碼中的JS String類型一樣使用,但它沒有相同的方法!

特別是我發現它不能用於傳遞給'stringify()'的JS對象,因爲它沒有toJSON()方法。

我發現的唯一解決方案是顯式地在JS中添加「」,將Java字符串轉換爲JS字符串。我發現沒有辦法代碼中的Java方法直接返回了良好的JS串...(如Context.javaToJS()不轉換一個Java字符串) 如:

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