在js里有一个数组:var params = new Array();
params.push({
"id":"007",
"name":"bangder"
});
params.push({
"id":"001",
"name":"admin"
});
现在我传给到了java里.
在java里怎么才能拿到js数组中的值啊~// 已得到js中的参数
String[] params = getParams();
// 遍历
for(int i = 0; i < params.length; i++)
{
// 我在这里怎么才能得到具体的值呢.
}也许.传递数组进来本身就是个走不出的胡同.
params.push({
"id":"007",
"name":"bangder"
});
params.push({
"id":"001",
"name":"admin"
});
现在我传给到了java里.
在java里怎么才能拿到js数组中的值啊~// 已得到js中的参数
String[] params = getParams();
// 遍历
for(int i = 0; i < params.length; i++)
{
// 我在这里怎么才能得到具体的值呢.
}也许.传递数组进来本身就是个走不出的胡同.
解决方案 »
- memcached 储存的对象与从数据库查询的对象不一致
- 百度地图批量坐标转换如何接收转换后的坐标值并将值传入action中
- web.xml
- struts2 关于session中id的类型转换问题
- 分页问题
- <filter-mapping>中与多个patter匹配的<url-pattern>应该怎么写?
- 目前刚开始接手JSP+JavaBean的工作,不知大家都使用什么样的开发环境!
- checkbox值为空提交空指针错误的问题
- 关于连接数据库
- 一个servlet是否可以处理多个表单?
- 急!tomcat日志经常会出现ssi相关严重错误,找不到原因,请高手指点,谢谢!
- struts2+spring+hibernate数据库操作报空指针
可以满足你的需求.
Java库好像叫json-lib,js文件是json2.js
用json 如果怕麻烦的话还是弄成有规律的字符串到后台解析去吧
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String script = "var params = new Array();\r\n" + "params.push({\r\n"
+ " \"id\":\"007\",\r\n" + " \"name\":\"bangder\"\r\n" + "});\r\n"
+ "params.push({\r\n" + " \"id\":\"001\",\r\n"
+ " \"name\":\"admin\"\r\n" + "});";
ScriptContext ctx = new SimpleScriptContext();
engine.eval(script, ctx);
engine.eval("var length = params.length", ctx);
int length = ((Number) ctx.getAttribute("length")).intValue();
String[][] param = new String[length][2];
for (int i = 0; i < length; i++) {
String evalScript = String
.format("var id = params[%1$d].id;var name = params[%1$d].name;", i);
engine.eval(evalScript, ctx);
param[i][0] = String.valueOf(ctx.getAttribute("id"));
param[i][1] = String.valueOf(ctx.getAttribute("name")); System.out.printf("id: %s, name: %s%n", param[i][0], param[i][1]);
}
有一个问题,就是每次取(getAttribute)只能取简单的变量名,比如x, length之类已经显式定义过,但是不能取param[0]。
其次,每次取出的对象最好是简单数据,也就是
var id = params[0].id;
Object id = ctx.getAttribute("id");
而不是
var param = params[0];
Object param = ctx.getAttribute("param");
后面一种方式,通过debug也能看到id,name的信息,但是由于这种类型的class依赖于供应商的实现,可能随版本而发生变化,导致代码不兼容。