【问题标题】:How do I pass Java array contents into javascript array?如何将 Java 数组内容传递到 javascript 数组中?
【发布时间】:2011-11-03 18:45:39
【问题描述】:
<%
    //Retrieving the Server list from dispatcher
    Collection<Server> svr = (Collection<Server>)request.getAttribute("stuff");

    ArrayList<String> serverIds = new ArrayList<String>();

    for(Server i : svr )
      serverIds.add(i.getId());

    String [] svrIds = new String[svr.size()];
    serverIds.toArray(svrIds);

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">

    var instanceIds = new Array(<%=svrIds%>);

    //test somethings in there
    alert(instanceIds[0]);


</script>
</head>
</html>

【问题讨论】:

标签: java javascript html


【解决方案1】:

我想说您必须使用svrIds 的JavaScript 兼容字符串表示,例如String srvIdsString = "\"element1\",\"element2\"";。为此,请遍历数组并将 "\"" + svrIds[i] + "\"," 附加到您的字符串表示形式中。

请注意,应再次删除最后一个逗号,或者根本不添加(例如,为最后一个元素跳过它或将其添加到前面并为第一个元素跳过它)。

例子:

StringBuilder idArrayBuilder = new StringBuilder();
for( String id : srvIds ) {
  if( idArrayBuilder.length() > 0 ) {
    idArrayBuilder.append(",");
  }

  idArrayBuilder.append( "\"" ).append(id).append( "\"" );
}
String result = idArrayBuilder.toString();

剩下的就看你了:)

【讨论】:

    【解决方案2】:

    如果您想使用 Java 代码为 Javascript 数据结构编写代码,可能最简单的方法是使用 Java 的 JSON 库。 JSON 字符串可以解释为 Javascript 代码。

    如果你想使用 JSON.simple,那么这里有如何生成 JSON 字符串的示例:

    http://code.google.com/p/json-simple/wiki/EncodingExamples

    在您的代码中,您应该能够执行以下操作:

    var instanceIds = <%= JSONValue.toJSONString(serverIds) %>
    

    您不需要将 ArrayList 转换为 Java 数组。请注意,此函数对您传递给它的类型很敏感;在这种情况下,数组实际上不起作用。

    此外,要执行此操作,您需要安装 JSON.simple JAR 文件并在 JSP 中导入 org.json.simple.JSONValue

    【讨论】:

    • 你能针对我上面的代码举一个简单的例子吗?非常感谢
    • 已添加。我无法像您显然那样在 JSP 设置中对此进行测试,但我确实在 ArrayList&lt;String&gt; 上测试了该函数,它按预期生成了一个 JSON 数组。
    【解决方案3】:

    Thomas 和 Nates 的答案都很好。但是,另一种方法是将每个都写入隐藏字段,然后让您的 js 在 DOM 中查找它们。

    【讨论】:

      【解决方案4】:
      <%
          String[] jArray= new String[2];
          jArray[0]="a";
          jArray[1]="b";
      
          StringBuilder sb = new StringBuilder();
          for(int i=0;i<jArray.length;i++) 
              sb.append(jArray[i]+",");
      %>
      
      <script type="text/javascript">
          temp="<%=sb.toString()%>";
          var strr = new Array();
          strr = temp.split(',','<%=jArray.length%>');
      
          alert("array: "+strr);
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多