// 这里放置数组
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>