私のJavaコードでは、ArrayList
のString
sがあります。このデータをJSPページのJavaScript変数に入れたいです私の最初の考えは、それを直接含めることでした、例えば:
var myArray = <%= arrayList %>;
残念ながら、実行時にmyArray
は[a,b,c]
形式の文字列であり、実際のJavaScript配列ではありません。 Java ArrayList
からJavaScript配列にデータを取得するにはどうすればよいですか?
_<%=arraylist%>
_を使用すると、リストのtoString()
を呼び出し、_[a,b,c]
_を出力します
そして、いいえ、Java arrayList
をjavascript配列に直接変換することはできません。Java ArrayList
を_JSON String
_、およびJSON.parse()
を使用してJavascript object
を取得します。
ライブラリなし:
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) %>;
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 = [];
この方法を試してください:
var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>;
JavaScript split()メソッドは配列を返すので、Java ArrayListをJavaScript配列に変換する簡単な方法です。
function toJavascript(){
var array="<%=javaArrayList%>";
array=array.replace("[", "");
array=array.replace("]", "");
return javaArray.split(",");
}