web-dev-qa-db-ja.com

文字列のJava ArrayListをJavaScript配列に変換する

私のJavaコードでは、ArrayListStringsがあります。このデータをJSPページのJavaScript変数に入れたいです私の最初の考えは、それを直接含めることでした、例えば:

var myArray = <%= arrayList %>;

残念ながら、実行時にmyArray[a,b,c]形式の文字列であり、実際のJavaScript配列ではありません。 Java ArrayListからJavaScript配列にデータを取得するにはどうすればよいですか?

11
Jack

_<%=arraylist%>_を使用すると、リストのtoString()を呼び出し、_[a,b,c]_を出力します

そして、いいえ、Java arrayListをjavascript配列に直接変換することはできません。Java ArrayListを_JSON String_、およびJSON.parse()を使用してJavascript objectを取得します。

Json objet および Json in Java

5
Suresh Atta

ライブラリなし:

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) %>;
13
Uooo

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

この方法を試してください:

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

JavaScript split()メソッドは配列を返すので、Java ArrayListをJavaScript配列に変換する簡単な方法です。

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