在我的 Java 代码中,我有一个ArrayList
of String
s。我想将此数据放在我正在处理的 JSP 页面上的 JavaScript 变量中。我的第一个想法是直接包含它,例如:
var myArray = <%= arrayList %>;
不幸的是,在执行时,它myArray
是一个格式为 的字符串[a,b,c]
,而不是一个实际的 JavaScript 数组。如何从 Java 获取一些数据ArrayList
到 JavaScript 数组?
在我的 Java 代码中,我有一个ArrayList
of String
s。我想将此数据放在我正在处理的 JSP 页面上的 JavaScript 变量中。我的第一个想法是直接包含它,例如:
var myArray = <%= arrayList %>;
不幸的是,在执行时,它myArray
是一个格式为 的字符串[a,b,c]
,而不是一个实际的 JavaScript 数组。如何从 Java 获取一些数据ArrayList
到 JavaScript 数组?
没有图书馆:
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) %>;
当您使用<%=arraylist%>
它时调用toString()
列表并打印 [a,b,c]
不,您不能直接从 Java 转换arrayList
为 javascript 数组,将 Java 转换ArrayList
为JSON String
,并用于JSON.parse()
获取 Javascript object
。
在您的 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 = [];
JavaScript split() 方法返回一个数组,因此它是一种将 Java ArrayList 转换为 JavaScript 数组的简单方法。
function toJavascript(){
var array="<%=javaArrayList%>";
array=array.replace("[", "");
array=array.replace("]", "");
return javaArray.split(",");
}
试试这个方法:
var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>;