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

标签 javascript html jsp liferay portlet

我有一个 Liferay portlet,我在 .jsp 文件中将一个字符串数组从操作阶段传递到呈现阶段。我能够像这样访问数组并遍历它:

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

这只是为了检查传递数据是否正常...但是,我想将整个数组传递给我的 javascript 函数(处理将数据渲染到 Canvas )。知道如何做到这一点吗?

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

<%

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 中传递数据的教程并不多(当我找到任何教程时,该方法仅适用于单个字符串,不适用于数组)。感谢您提供任何提示!

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>

关于javascript - 将数组从 .jsp 传递到 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16731041/

相关文章:

jsp - JSP 标记的 Outcomment 属性

javascript - 将 div 停靠到窗口左侧并再次单击到原始位置

javascript - WEBP 图片回退

java - JSP 页面永远缓存在 tomcat 中

javascript - HTML 输入类型编号 JavaScript onchange 触发两次?

html - CSS3 boxshadow 在所有其他元素之上?

java - 使用 Java 检查 MySQL 数据库中的用户是否已存在时出现错误

javascript创建多维数组语法

javascript - 我如何在 Fabric.js 版本中获取 itext 样式2?

javascript - 如何在canvas js中循环制作多系列图表?