如何将Java数组内容传递到javascript数组中? var instanceIds=new Array(); //在那里测试一些东西 警报(InstanceId[0]);

如何将Java数组内容传递到javascript数组中? var instanceIds=new Array(); //在那里测试一些东西 警报(InstanceId[0]);,java,javascript,html,Java,Javascript,Html,我认为您必须使用与JavaScript兼容的字符串表示法来表示svrIds,比如string srvIdsString=“\'element1\”、\'element2\”。要获得该结果,请迭代数组并将“\”“+svrIds[i]+“\”,“附加到字符串表示中 请注意,最后一个逗号应再次删除或根本不添加(例如,对于最后一个元素跳过它,或者将其添加到前面,对于第一个元素跳过它) 例如: <% //Retrieving the Server list from dispatcher

我认为您必须使用与JavaScript兼容的字符串表示法来表示
svrIds
,比如
string srvIdsString=“\'element1\”、\'element2\”。要获得该结果,请迭代数组并将
“\”“+svrIds[i]+“\”,“
附加到字符串表示中

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

例如:

<%
    //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数据结构编写代码,最简单的方法可能是使用Java的JSON库。JSON字符串可以解释为Javascript代码

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

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

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

  idArrayBuilder.append( "\"" ).append(id).append( "\"" );
}
String result = idArrayBuilder.toString();
var实例ID=
您不需要将ArrayList转换为Java数组。请注意,此函数对传入的类型很敏感;在这种情况下,数组实际上不起作用


此外,要做到这一点,您需要安装JSON.simple JAR文件并在JSP中导入
org.JSON.simple.JSONValue

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

您能针对我上面的代码生成一个简单的示例吗?非常感谢。我无法像您那样在JSP设置中测试这个函数,但我确实在
ArrayList
上测试了该函数,它按预期生成了一个JSON数组
var instanceIds = <%= JSONValue.toJSONString(serverIds) %>
<%
    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>