如何将Java数组内容传递到javascript数组中? var instanceIds=new Array(); //在那里测试一些东西 警报(InstanceId[0]);
我认为您必须使用与JavaScript兼容的字符串表示法来表示如何将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
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>