一尘不染

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

jsp

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

在jsp中,我有一List<String>

我正在尝试以下代码:

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

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

我也尝试过:

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

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

谢谢。


阅读 498

收藏
2020-06-08

共1个答案

一尘不染

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

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

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

我的JSP技能很生疏,语法可能有所不同,但是希望您能理解。

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

2020-06-08