【问题标题】:Access list items from JavaScript从 JavaScript 访问列表项
【发布时间】:2011-10-03 14:07:51
【问题描述】:

我想通过索引从 JavaScript 访问模型项到 Play Framework 模板:

<script type="text/javascript" charset="utf-8">
    window.onload = function()
    {
        var cl = ${colors.size()};
        int i = 0;
        for (i=0;i<cl;i++)
        {
            labels = labels + "${colors.name.get(i).escapeJavaScript().raw()}";
        }
    }
</script>

我的问题是这个循环抛出异常:

IndexOutOfBoundsException:索引:12,大小:4

注意 0:型号 = 颜色。

注意1:大小为4。

注意 2:如果我使用固定数字而不是变量 i 进行测试,则可以,但这不是我需要的。

不知道为什么它不起作用。

【问题讨论】:

  • 您是否有可能将 Java 和 JavaScript 混为一谈?您同时使用 varint,并假设 JavaScript i 在 Java 中可用。

标签: java javascript templates playframework


【解决方案1】:

您尝试在 Javascript 循环中使用 Groovy,这是错误的。

请记住,您的 Groovy 代码(在 ${} 内)由服务器端的 Play 模板评估,并将 HTML 页面的结果返回给客户端,而 Javascript 在客户端(由浏览器,而不是您的服务器)。

也许你想做一些类似的事情:

<script type="text/javascript" charset="utf-8">
window.onload = function()
{
    labels = [#{list colors.name}"${_.escapeJavaScript().raw()}"#{if !_isLast},#{/if}#{/list}];
}

如果你不明白它的作用,这仍然很危险,

更喜欢使用简单的 AJAX 请求和 renderJSON 方法进行动态加载。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2022-10-01
    • 2014-10-15
    • 1970-01-01
    • 2019-04-17
    • 2016-09-18
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多