我需要Java类返回的JavaScript数组/多维,
<script type="text/javascript">
var strComboValue = <%=DBComboOptions.getOptions(combos)%>;
</script>
这里,strComboValue
是一个JavaScript变量,DBComboOptions.getOptions(combos)
返回Java类中的数组。现在我想在JavaScript中使用该数组。
答案 0 :(得分:2)
让Java / JSP打印出语法上有效的JS数组语法。请记住,Java / JSP和JavaScript不会同步运行。 Java / JSP生成HTML作为一个大String
,而JS只是其中的一部分。一旦从Java / JSP检索到所有HTML输出,JS最终会在webbrowser中运行。
假设您最终需要以下有效的JS数组语法:
<script type="text/javascript">
var strComboValue = [ "one", "two", "three" ];
</script>
然后,您应该相应地编写Java / JSP代码,以便它打印出完全相同的语法:
<script type="text/javascript">
var strComboValue = [
<%
String[] options = DBComboOptions.getOptions(combos);
for (int i = 0; i < options.length; i++) {
%>
"<%= options[i] %>"
<%
if (i + 1 < options.length) {
%>
,
<%
}
}
%>
];
</script>
它只是非常难以理解(不仅仅是因为使用old fashioned scriptlet 而不是taglibs)。但是,更容易获取像Google Gson这样的JSON(JavaScript Object Notation)库,并创建一个额外的方法getOptionsAsJson()
,它可以执行以下操作:
public getOptionsAsJson(Object value) {
return new Gson().toJson(getOptions(value));
}
最后用它代替:
<script type="text/javascript">
var strComboValue = <%=DBComboOptions.getOptionsAsJson(combos)%>;
</script>
答案 1 :(得分:0)
你可以使用json lib,在http://json.org上有很多json librarys, 即。
int[] arr = new int [] {1,2,3}; // java
转换为:
var arr = [1,2,3]; // javascript