【问题标题】:How can we get JavaScript array by JSP scriptlet我们如何通过 JSP scriptlet 获取 JavaScript 数组
【发布时间】:2012-05-28 07:38:58
【问题描述】:

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

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

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

【问题讨论】:

  • 我不知道jsp,但您似乎在strComboValue中有数组
  • 使用一些json编码库并在DBComboOptions.getOptions(combos)上调用json encode
  • @Esailija :这应该是一个答案。
  • @JBNizet 我宁愿关闭为重复:P

标签: javascript jsp


【解决方案1】:

只需让 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>

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

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

最后改用它:

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

【讨论】:

    【解决方案2】:

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

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

    转换为:

    var arr = [1,2,3];  // javascript
    

    【讨论】:

      猜你喜欢
      • 2014-05-20
      • 2013-05-14
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多