我们如何通过JSP scriptlet获取JavaScript数组

时间:2012-05-28 07:38:58

标签: javascript jsp

我需要Java类返回的JavaScript数组/多维,

<script type="text/javascript">
     var strComboValue  = <%=DBComboOptions.getOptions(combos)%>;
</script>

这里,strComboValue是一个JavaScript变量,DBComboOptions.getOptions(combos)返回Java类中的数组。现在我想在JavaScript中使用该数组。

2 个答案:

答案 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