2013-07-03 10 views
9

W moim kodzie Java mam ArrayList z String s. Chciałbym umieścić te dane w zmiennej JavaScript na stronie JSP, nad którą pracuję. Moją pierwszą myślą było umieścić go bezpośrednio, np .:Przekształcanie tablicy Java ArrayList ciągów w tablicę JavaScript

var myArray = <%= arrayList %>; 

Niestety, gdy są wykonywane, myArray jest ciągiem w formacie [a,b,c], a nie rzeczywiste tablica JavaScript. Jak mogę pobrać niektóre dane z Java ArrayList do tablicy JavaScript?

+0

proszę dodać więcej kodu z przykładowymi danymi – sabithpocker

Odpowiedz

4

Podczas korzystania <%=arraylist%> to nazywa toString() na liście i drukuje [a,b,c]

I nie, nie można direclty przekonwertować z Java arrayList do javascript tablicy, Konwersja Java ArrayList do JSON String i używać JSON.parse() dostać Javascript object.

Wystarczy popatrzeć na Json objet i Json in java

+0

Dzięki kumplowi. Mam ciąg json jak [a, b, c]. Kiedy używam Json.parse (aa); Pokazuje błąd. Niepowtarzalny błąd odniesienia.a nie jest zdefiniowany. Musi więc być jak ["a", "b", "c"]. Jak to zmienić? – Jack

+0

Dude, musisz dodać bibliotekę json do swojej ścieżki klas i przekonwertować listę na serwerze na ciąg json i wysłać go do klienta. Następnie JSON.parse() działa :) –

+0

Drugi link w odpowiedzi nie jest już dostępny. – Knu8

1

spróbować w ten sposób:

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

Withoug biblioteki:

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) %>; 
+0

Dzięki stary. Spodziewam się, że tylko to ... – Jack

+0

Technika jest dobra, ale nadal trzeba sparsować ją do JSON, podczas przypisywania zmiennej javascript. –

+0

To zadziałało dla mnie! –

3

Wykonaj następujące czynności na stronie 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() ? ",":"" %><% } %>]; 

Wyjście będzie

var jsArray = ["one","two","three"]; 

Jeśli lista była pusta, to wyjście

var jsArray = []; 
1

JavaScript split() metoda zwraca tablicę , jak wiemy, więc jest to najprostszy sposób przekonwertowania javaArrayList na jav tablica ascript. Działa to dobrze dla mnie.

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

} 
Powiązane problemy