java类里的数组 如何 赋值给js里数组
然后循环输出js中的数组,
求一个完整的代码
200771600@qq.com 展开
兄弟,这个挺简单的,因为Java6里边引入的脚本支持,其架构本身就很清晰简单,总的说来就那么几个接口和一个工厂实用类。Java的脚本主要有以下三个重要概念:
ScriptEngine:负责编译执行具体的脚本。
ScriptContext:脚本执行的上下文环境。
Bindings:与Java环境之间的参数绑定。
其构架关系,见下图:
对于你的需求,我简单写了一个例子,如下:
String script = "for(i=0;i<names.length;i++){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代码也是用它来生成的。这个,你懂的。我觉得你的问题应该不是指这个,因为这个实在是太简单了。
好吧 先谢下, 我意思是这样的, 我用的SSH 在我的Action里面封装了 五个数组,
我跳转到一个页面,然后把这五个数组赋值给js里面的五个变量, 当然这需要打散拼接,我这有别的工作放不下 ,就求救一下网友了,
真没想到,你说的就是第二种情况,我觉得已经说得非常清楚了。你既然是搞JavaWEB的,就应该很清楚噻,Java程序运行在服务器端,JavaScript运行在终端(客户端),它们根本就不相干,不在同一台机器上,怎么可能以语言内建的方式通信呢????
硬要传递参数,只能是把你的Java数组转化成字符串,而且这些字符串是可执行的JS代码(随便补充一句,这个方式很烂)。我觉得这个甚至都不需要举例。需要注意的是,如果你的Java数组里边的元素又是一个较复杂的Java对象(假定是SamplePerson),那就麻烦了,你需要在JSP页面上再定义与SamplePerson字段相映射的JavaScript的对象。这可以算是JavaScript的高级特性之一了,大多数搞Java后端的人,JS功底都比较弱。只是觉得,是不是应该反思一下,真有必要这样做吗?没有其它替代方案么?
2015-07-14 · 知道合伙人软件行家
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
String [][]str = {{"40000","09401","09402"},{"40001","09403","09404"}};
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>add score</title>
<meta. http-equiv="pragma" content="no-cache">
<meta. http-equiv="cache-control" content="no-cache">
<meta. http-equiv="expires" content="0">
<meta. http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta. http-equiv="description" content="This is my page">
<script. language="javascript">
function select(){
var bj=document.getElementById('class');<!--删除前一次创建的option-->
obj.options.length=0;
var course = document.getElementById("course").value;
alert(course);
<%
for(int i=0;i<str.length;i++){%>
if(course == "<%=str[i][0]%>"){
<%
for(int j=1;j<str[i].length;j++){%>
var ption = document.createElement("option");
oOption.innerHTML = "<%=str[i][j]%>"
oOption.value = "<%=str[i][j]%>"
document.getElementById("class").options.add(oOption);
<%}%>
}
<%}%>
var arr = "<%=str[0][1]%>";
alert(arr);
}
</script>
<script. type="text/javascript">
</script>
</head>
<body id="level1">
<form. action="delete!deleteStudent.action" method="post">
<font size="2px" color="red"><s:property value="#request.sexistError"/></font>
课程:<select id="course" name="course" > <%for(int i=0;i<str.length;i++){ %>
<option nclick="select()"><%=str[i][0]%></option>
<%} %>
</select>
班级:<select id="class" name="cla"> </select>
<div id="score_menu">
<input type="submit" name="submit" class="submit" value="提交"/>
<input type="reset" name="reset" class="reset" value="重置"/><br />
</form>
</body>
</html>
很简单的事。
用jsonobject
和jsonArray这两个类就行了
不会用啊
就是第三方的jar包,你百度搜索jsonobject和jsonarray
ssh