在我的Java代码中,我有一个String s的ArrayList。我想把这个数据放在我正在处理的JSP页面上的JavaScript变量中。我的第一个想法是直接包含它,例如:
String
ArrayList
var myArray = <%= arrayList %>;
不幸的是,myArray在执行时是一个[a,b,c]的字符串,而不是一个实际的JavaScript数组。我如何从Java ArrayList中获取一些数据到JavaScript数组中?
myArray
[a,b,c]
f1tvaqid1#
带库:java :
public static String toJavascriptArray(String[] arr){ StringBuffer sb = new StringBuffer(); sb.append("["); for(int i=0; i<arr.length; i++){ sb.append("\"").append(arr[i]).append("\""); if(i+1 < arr.length){ sb.append(","); } } sb.append("]"); return sb.toString(); }
JSP:
var myArray = <%= toJavascriptArray(arrayList) %>;
amrnrhlw2#
当使用<%=arraylist%>时,它调用列表中的toString()并打印[a,b,c]不,你不能直接从Java arrayList转换为JavaScript数组,将Java ArrayList转换为JSON String,并使用JSON.parse()获得JavaScript object。请看一下Json objet和Json in java
<%=arraylist%>
toString()
arrayList
JSON String
JSON.parse()
object
juud5qan3#
在JSP页中执行以下操作
<% List<String> strList = new ArrayList<String>(); strList.add("one"); strList.add("two"); strList.add("three"); %> var jsArray = [<% for (int i = 0; i < strList.size(); i++) { %>"<%= strList.get(i) %>"<%= i + 1 < strList.size() ? ",":"" %><% } %>];
输出将为
var jsArray = ["one","two","three"];
如果列表为空,则将输出
var jsArray = [];
ghg1uchk4#
JavaScript split()方法返回一个数组,因此这是一种将JavaArrayList转换为JavaScript数组的简单方法。
function toJavascript(){ var array="<%=javaArrayList%>"; array=array.replace("[", ""); array=array.replace("]", ""); return javaArray.split(","); }
kq0g1dla5#
试试这个方法:
var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>;
xxslljrj6#
简单
var jsArray = JSON.parse(yourJavaListObject)
6条答案
按热度按时间f1tvaqid1#
带库:
java :
JSP:
amrnrhlw2#
当使用
<%=arraylist%>
时,它调用列表中的toString()
并打印[a,b,c]
不,你不能直接从Java
arrayList
转换为JavaScript数组,将JavaArrayList
转换为JSON String
,并使用JSON.parse()
获得JavaScriptobject
。请看一下Json objet和Json in java
juud5qan3#
在JSP页中执行以下操作
输出将为
如果列表为空,则将输出
ghg1uchk4#
JavaScript split()方法返回一个数组,因此这是一种将JavaArrayList转换为JavaScript数组的简单方法。
kq0g1dla5#
试试这个方法:
xxslljrj6#
简单