在js文件中怎么获得java方法返回的值

JavaScript06

在js文件中怎么获得java方法返回的值,第1张

<script type="text/javascript">

// 这里放置数组

var array = new Array()

<% String[] params = (String[])request.getSession().getAttribute("您的存入key")

for(int i = 0i <params.lengthi++){%>

array.push(<%=params[i]%>)

<%}%>

</script>

在Java中调用js文件中的function,传入调用参数,并获取返回值

js文件中的merge函数将两个参数a,b相加,并返回c。

// expression.js

function merge(a, b) {

c = a * b

return c

}

在Java代码中读取js文件,并参数两个参数,然后回去返回值。

package com.sinaapp.manjushri

import java.io.FileReader

import javax.script.Invocable

import javax.script.ScriptEngine

import javax.script.ScriptEngineManager

/** * Java调用并执行js文件,传递参数,并活动返回值 * * @author manjushri */

public class ScriptEngineTest {

public static void main(String[] args) throws Exception {

ScriptEngineManager manager = new ScriptEngineManager()

ScriptEngine engine = manager.getEngineByName("javascript")

String jsFileName = "expression.js" // 读取js文件

FileReader reader = new FileReader(jsFileName) // 执行指定脚本

engine.eval(reader)

if(engine instanceof Invocable) {

Invocable invoke = (Invocable)engine // 调用merge方法,并传入两个参数

// c = merge(2, 3)

Double c = (Double)invoke.invokeFunction("merge", 2, 3)

System.out.println("c = " + c)

}

reader.close()

}

}

输出结果:

c = 5.0

方法:

1、通过webview访问js脚本

2、js脚本再调用webview中的java函数把结果返回

示例代码:

通过本地的webview打开脚本页面。

调用步骤

1、设置webview支持脚本

webSettings.setJavaScriptEnabled(true)

2、打开脚本页面

mWebView.loadUrl("file:///android_asset/demo.html")//这里打开该app的asset目录下的demo.html,里面含有wave函数脚本

3、调用脚本

mWebView.loadUrl("javascript:wave()")//调用打开页面中的wave函数

4、webview中建立js能够访问

 mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo")//js可以通过demo访问到DemoJavaScriptInterface 类中的方法。

 final class DemoJavaScriptInterface {

        DemoJavaScriptInterface() {

        }

        public void clickOnAndroid(String result) {

             System.out.prinltn("返回的结果"+result)           

        }

    }

5、js访问webview方法

<script language="javascript">

        function wave() {

            alert("1")

            window.demo.clickOnAndroid('结果1')//返回结果,调用java方法

        }

    </script>