JSP 将字符串的Java数组列表转换为JavaScript数组

c8ib6hqw  于 2023-03-16  发布在  Java
关注(0)|答案(6)|浏览(234)

在我的Java代码中,我有一个String s的ArrayList。我想把这个数据放在我正在处理的JSP页面上的JavaScript变量中。我的第一个想法是直接包含它,例如:

var myArray = <%= arrayList %>;

不幸的是,myArray在执行时是一个[a,b,c]的字符串,而不是一个实际的JavaScript数组。我如何从Java ArrayList中获取一些数据到JavaScript数组中?

f1tvaqid

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) %>;
amrnrhlw

amrnrhlw2#

当使用<%=arraylist%>时,它调用列表中的toString()并打印[a,b,c]
不,你不能直接从Java arrayList转换为JavaScript数组,将Java ArrayList转换为JSON String,并使用JSON.parse()获得JavaScript object
请看一下Json objetJson in java

juud5qan

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 = [];
ghg1uchk

ghg1uchk4#

JavaScript split()方法返回一个数组,因此这是一种将JavaArrayList转换为JavaScript数组的简单方法。

function toJavascript(){
    var array="<%=javaArrayList%>";
    array=array.replace("[", "");
    array=array.replace("]", "");
    return javaArray.split(",");
}
kq0g1dla

kq0g1dla5#

试试这个方法:

var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>;
xxslljrj

xxslljrj6#

简单

var jsArray = JSON.parse(yourJavaListObject)

相关问题