java - 从 JavaScript 访问列表项

标签 java javascript templates playframework

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

<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 : Index: 12, Size: 4

注释 0:型号 = 颜色。

注1:大小为4。

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

无法理解为什么它不起作用。

最佳答案

您尝试在 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 方法进行动态加载。

关于java - 从 JavaScript 访问列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636142/

相关文章:

javascript - 如何设置 VSCode 来调试 webpack 捆绑的 nodejs 服务器

javascript - 迭代枚举对象中多个数组的键值对

c++ - 使用迭代器执行对象操作的函数

c++ - 访问基类型数组成员(Int-to-Type 习语)

c++ - 为什么编译器会选择模板参数列表中的基类构造函数?

java - 哪个更好 : Implementing a Runable Interface or extending Thread Class

java - 没有 'org.springframework.jms.core.JmsTemplate' 类型的合格 bean

java - 从 main() 方法中获取可执行 jar 的名称

java - Autowired 不会为相同类型的多个 bean 抛出异常

javascript - Polymer core-ajax跨域问题