Dans mon code Java, j'ai ArrayList
de String
s. J'aimerais mettre ces données dans une variable JavaScript sur une page JSP sur laquelle je travaille. Ma première pensée a été de l’inclure directement, par exemple:
var myArray = <%= arrayList %>;
Malheureusement, lorsqu’il est exécuté, myArray
est une chaîne au format [a,b,c]
, et non un tableau JavaScript réel. Comment puis-je obtenir des données d'une ArrayList
Java vers un tableau JavaScript?
Lorsque vous utilisez <%=arraylist%>
, il appelle la fonction toString()
dans la liste et imprime [a,b,c]
.
Et non, vous ne pouvez pas convertir directement De __ arrayList
à un tableau javascript, convertir la ArrayList
Java en JSON String
et utiliser JSON.parse()
pour obtenir Javascript object
.
Regardez Json objet et Json en Java
Sans bibliothèque:
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) %>;
Faites ce qui suit dans votre page 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() ? ",":"" %><% } %>];
La sortie sera
var jsArray = ["one","two","three"];
Si votre liste était vide, elle sera affichée
var jsArray = [];
essayez de cette façon:
var myArray = <%=net.sf.json.JSONSerializer.toJSON(arrayList) %>;
La méthode JavaScript split () renvoie un tableau. Il s'agit donc d'un moyen simple de convertir une liste de tableaux Java en un tableau JavaScript.
function toJavascript(){
var array="<%=javaArrayList%>";
array=array.replace("[", "");
array=array.replace("]", "");
return javaArray.split(",");
}