2013-07-03 60 views
9

Trong mã Java của tôi, tôi có một ArrayList trong số String s. Tôi muốn đặt dữ liệu này vào biến JavaScript trên trang JSP mà tôi đang làm việc. Suy nghĩ đầu tiên của tôi là đưa nó trực tiếp, ví dụ .:Chuyển đổi một ArrayList Java của chuỗi thành một mảng JavaScript

var myArray = <%= arrayList %>; 

Thật không may, khi thực hiện, myArray là một chuỗi theo định dạng [a,b,c], không phải là một mảng JavaScript thực tế. Làm cách nào để lấy một số dữ liệu từ một Java ArrayList tới một mảng JavaScript?

+0

vui lòng thêm mã khác với dữ liệu mẫu – sabithpocker

Trả lời

4

Khi bạn sử dụng <%=arraylist%> nó gọi là toString() trên danh sách và in [a,b,c]

Và Không, bạn không thể direclty chuyển đổi Từ Java arrayList để mảng javascript, Chuyển đổi Java ArrayList để JSON String, và sử dụng JSON.parse() để có được javascript object.

Có một cái nhìn tại Json objetJson in java

+0

Cảm ơn bạn. Tôi có chuỗi json như [a, b, c]. Khi tôi sử dụng Json.parse (aa); Nó cho thấy lỗi. Lỗi tham chiếu không bắt buộc không được xác định. Vì vậy, nó phải giống như ["a", "b", "c"]. Vậy làm thế nào để chuyển đổi như thế này? – Jack

+0

Dude, bạn phải thêm thư viện json vào đường dẫn lớp của bạn và chuyển đổi arraylist của bạn trên serverside thành chuỗi json và gửi nó đến client.Then JSON.parse() hoạt động :) –

+0

Liên kết thứ hai trong câu trả lời không còn nữa. – Knu8

1

thử cách này:

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

Withoug thư viện:

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

Cảm ơn anh bạn. Tôi mong đợi như thế này chỉ ... – Jack

+0

Kỹ thuật là tốt, nhưng bạn vẫn cần phải phân tích nó thành JSON, trong khi gán cho biến javascript. –

+0

Điều này làm việc cho tôi! –

3

Làm như sau trong trang JSP của bạn

<% 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() ? ",":"" %><% } %>]; 

Sản lượng sẽ

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

Nếu Danh sách của bạn là trống rỗng, nó sẽ đưa ra

var jsArray = []; 
1

Javascript split() phương thức trả về một mảng , như chúng ta biết, do đó, cách đơn giản nhất để chuyển đổi javaArrayList thành jav mảng ascript. Việc này ổn với tôi.

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> 

} 
Các vấn đề liên quan