如何使用jsp将java数组转换为javaScript数组?

2022-09-04 05:50:58

我的服务器上有一个字符串列表,我试图以数组的形式将其发送到客户端。我尝试使用的代码如下:

在jsp中,我有一列List<String>

我正在尝试以下代码:

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

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

我也试过:

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

这也不起作用。我觉得我在某个地方犯了一个小错误,只是没有看到它。我试图做的事情是否可能以我正在尝试的方式实现?

谢谢。


答案 1

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

相反,您需要做的是在服务器上执行一个循环,如下所示:

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

我的JSP技能很生硬,语法可能不同,但我希望你能明白。

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


答案 2

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

在这里查看

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