将数组从.jsp传递到javascript函数

我有一个Liferay Portlet,我在其中将动作阶段的String数组传递到.jsp文件中的呈现阶段。我能够访问数组并像这样遍历它:

<c:forEach var="item" items="${arrayItems}"> 

<p>${item}</p>

</c:forEach>

这只是为了检查传递数据是否可以正常工作…但是,我想将整个数组传递给我的javascript函数(该函数将数据渲染到画布上)。任何想法如何做到这一点?

到目前为止,我已经尝试了以下方法:

<%

String[] items;

items = new String[((String[])request.getAttribute("arrayItems")).length];

items = ((String[])request.getAttribute("arrayItems"));

%>

<script>

displayItems(<% arrayItems %>);

</script>

并且

<script>

displayItems(${arrayItems});

</script>

我知道这可能是一个非常基本的问题,但是关于在Web上的Portlet中传递数据的教程并不多(而且当我发现任何方法时,该方法仅适用于单个String,不适用于数组)。感谢您的提示!

PS:我检查了我的JavaScript函数是否正常工作:

<script>

displayMessages(["One", "Two", "Three"]);

</script>

回答:

您需要一种以javascript数组格式输出数组字符串的方法。该jsp代码在服务器端运行,然后以文本形式返回html和javascript代码。然后在客户端执行该代码。

<%!

public static String getArrayString(String[] items){

String result = "[";

for(int i = 0; i < items.length; i++) {

result += "\"" + items[i] + "\"";

if(i < items.length - 1) {

result += ", ";

}

}

result += "]";

return result;

}

%>

当然,您可以使用StringBuffer来达到更好的性能,但是这向您展示了这个主意。

然后你做这样的事情

<script>

displayItems(<% getArrayString(items) %>);

</script>

以上是 将数组从.jsp传递到javascript函数 的全部内容, 来源链接: utcz.com/qa/407619.html

回到顶部