当前位置:  开发笔记 > 编程语言 > 正文

如何使用jsp将java数组传输到javaScript数组?

如何解决《如何使用jsp将java数组传输到javaScript数组?》经验,为你挑选了3个好方法。

我在我的服务器上有一个字符串列表,我试图以数组的形式到达客户端.我试图使用的代码如下:

在jsp中我有一个List

我正在尝试以下代码:

<%int j = 0; %>
for(var i = 0; i < <%=columns.size()%>; i++)
{
  colArray[i] = "<%=columns.get(j++)%>";
}

此代码只返回colArray中每个元素的列列表中的第一个元素.

我也尝试过:

colArray = <%=columns.toArray()%>;

这也不起作用.我觉得我在某个地方犯了一个小错误,我只是没有看到它.我试图以我尝试的方式做的事情是什么?

谢谢.



1> Michael Borg..:

您将获得在服务器上执行的JSP代码与在客户端上执行的JavaScript代码混淆.该片段<%=columns.get(j++)%>在服务器上执行一次,此时围绕它的JavaScript循环无关紧要.当它到达客户端时,循环的主体只是说colArray[i] = "first entry";当然将相同的字符串放入数组的每个元素中.

你需要做的是在服务器上执行循环,如下所示:

<% for (int i=0; i
colArray[<%= i %>] = "<%= columns.get(i) %>"; 
<% } %>

我的JSP技能很生疏,语法可能不同,但我希望你能得到这个想法.

编辑:正如评论中指出的那样,你需要非常小心地逃避那些可能导致它们被解释为JavaScript代码(最突出的引号)的字符串中的任何内容 - 特别是如果它们包含用户生成的内容.否则,您将使应用程序对跨站点脚本和跨站点请求伪造攻击敞开大门.



2> perrohunter..:

尝试使用JSON(Javascript对象表示法)对数组进行编码并在javascript上解码它非常简单

看看这里

http://www.json.org/java/index.html



3> Grant Wagner..:

JavaScript到达客户端后,服务器代码已停止执行.服务器代码不与客户端代码"并行"执行.

您必须使用Java构建整个JavaScript初始化并将其完整且可执行地发送到客户端:

<%
StringBuffer values = new StringBuffer();
for (int i = 0; i < columns.size(); ++i) {
    if (values.length() > 0) {
        values.append(',');
    }
    values.append('"').append(columns.get(i)).append('"');
}
%>

这仅仅是一个办法做到这一点,你也可以通过嵌入内部服务器代码建立"对飞"输出[].我使用此示例尝试演示构建包含客户端JavaScript的字符串并将其输出到浏览器之间的分离.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有