我有一个 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> 


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!