我的服务器上有一个字符串列表,试图以数组的形式到达客户端。我尝试使用的代码如下:
在jsp中,我有一List<String>列
List<String>
我正在尝试以下代码:
<%int j = 0; %> for(var i = 0; i < <%=columns.size()%>; i++) { colArray[i] = "<%=columns.get(j++)%>"; }
此代码仅返回colArray中每个元素的列列表中的第一个元素。
我也尝试过:
colArray = <%=columns.toArray()%>;
这也不起作用。我觉得我在某个地方犯了一个小错误,只是没有看到它。我所尝试做的事情是否有可能做到?
谢谢。
您将服务器上执行的JSP代码与客户端上执行的JavaScript代码混合在一起。该代码段<%=columns.get(j++)%>在服务器上执行一次,此时的JavaScript循环无关紧要。当到达客户端时,循环的主体只是说出colArray[i] = "first entry";哪个当然会将相同的字符串放入数组的每个元素中。
<%=columns.get(j++)%>
colArray[i] = "first entry";
相反,您需要在服务器上执行循环,如下所示:
<% for (int i=0; i<columns.size(); i++) { %> colArray[<%= i %>] = "<%= columns.get(i) %>"; <% } %>
我的JSP技能很生疏,语法可能有所不同,但是希望您能理解。
编辑: 正如评论中指出的那样,在转义那些可能导致它们解释为JavaScript代码(最引号)的字符串中时,您需要非常小心- 特别是如果它们包含用户生成的内容。否则,您将使应用程序容易受到跨站点脚本和跨站点请求伪造攻击的攻击。