2

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

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

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

4

2 回答 2

2

只需让 Java/JSP 打印一个语法上有效的 JS 数组语法。请记住,Java/JSP 和 JavaScript 不会同步运行。Java/JSP 将 HTML 作为一个整体生成,String而 JS 只是其中的一部分。一旦从 Java/JSP 检索到所有 HTML 输出,JS 最终会在 Web 浏览器中运行。

假设您最终想要以下有效的 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>

它只是非常不可读(不仅因为使用老式的 脚本而不是标记库)。然而,更简单的是获取像Google Gson这样的 JSON(JavaScript 对象表示法)库并创建一个附加方法getOptionsAsJson(),该方法执行以下操作:

public getOptionsAsJson(Object value) {
    return new Gson().toJson(getOptions(value));
}

最后改用它:

<script type="text/javascript">
    var strComboValue = <%=DBComboOptions.getOptionsAsJson(combos)%>;
</script>
于 2012-05-28T13:29:32.490 回答
0

你可以使用 json 库,在http://json.org上有很多 json 库,即

int[] arr = new int [] {1,2,3}; // java

转换成:

var arr = [1,2,3];  // javascript
于 2012-05-28T07:43:31.087 回答