java类里的数组 如何 赋值给js里数组

JavaScript022

java类里的数组 如何 赋值给js里数组,第1张

兄弟,这个挺简单的,因为Java6里边引入的脚本支持,其架构本身就很清晰简单,总的说来就那么几个接口和一个工厂实用类。Java的脚本主要有以下三个重要概念:

ScriptEngine:负责编译执行具体的脚本。

ScriptContext:脚本执行的上下文环境。

Bindings:与Java环境之间的参数绑定。

其构架关系,见下图:

对于你的需求,我简单写了一个例子,如下:

String script = "for(i=0i<names.lengthi++){print(names[i]+'\\n')}" //打印数组的JS代码

//jdk6自带了一个javascript脚本实现,是来自Mozilla的一个开源实现

ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript") 

Compilable compilable = (Compilable) engine  //这一步可以省略,某些脚本实现可能不支持

String[] names   = new String[]{"pig","tiger","piger","family"}

Bindings bindings = engine.createBindings() //Local级别的Binding,Binding分为两种,局部和全局 

bindings.put("names", names) //通过Bindings加入参数

CompiledScript compiledScript = compilable.compile(script) //解析编译脚本

compiledScript.eval(bindings)  //执行脚本

输出结果:

pig

tiger

piger

family

----说明一下-----

也许你不是这个意思,但依我之见,在java里提到javascript,应该就是指Java的脚本支持。Java本身并没有脚本特性,它只写了一个框框,使用中需要具体的脚本引擎实现。因此,除了JavaScript, 理论上,Java可以支持任何脚本语言,只要有相应的实现。

但如果你指的客户端的JavaScript,即WEB页面上的JS,那就更简单了,只需要在JSP页面上生成相应的JS代码就行了,毕竟JSP最终只是一个Servlet类,用它来生成页面文件的HTML源码,同时,相应的JS代码也是用它来生成的。这个,你懂的。我觉得你的问题应该不是指这个,因为这个实在是太简单了。

public final class Java2JS

{

public Java2JS()

{

}

public String getString()

{

String value = "Hi, Java2JS!"

return value//在JS中typeof value结果为string

}

public int getInt()

{

int value = 1

return value//在JS中typeof value结果为number

}

}

public class MainActivity extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

WebView wv = (WebView) this.findViewById(R.id.webView1)

wv.addJavascriptInterface(new Java2JS(), "j2js")

WebSettings ws = wv.getSettings()

ws.setJavaScriptEnabled(true)

wv.loadUrl("http://ip:port/xx.html")

}

}

。。

将list转换为json数据后直接赋值给js数组就可以。

json的格式可以是这样的

[0,1,2,3,4,5]

<%

stirng

str

=

"["

for(integer

i

:

list){

str

+=string.valueof(i)

}

str+="]"

%>

data

=

<%=str%>