Доступ к элементам списка из JavaScript

#java #javascript #templates #playframework

#java #javascript #шаблоны #playframework

Вопрос:

Я хочу получить доступ к элементам модели по индексу из 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 , все в порядке, но это не то, что мне нужно.

Не могу понять, почему это не работает.

Комментарии:

1. Есть ли вероятность, что вы путаете Java и JavaScript? Вы используете оба var и int , и предполагаете, что JavaScript i доступен в Java.

Ответ №1:

Вы пытаетесь использовать Groovy внутри цикла Javascript, что неверно.

Помните, что ваш заводной код (внутри $ {} ) оценивается шаблоном воспроизведения на стороне сервера и результатом HTML-страницы, возвращаемой клиенту, а Javascript оценивается на стороне клиента (браузером, а не на вашем сервере).

может быть, вы хотите сделать что-то вроде :

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

что все еще опасно, если вы не понимаете, что он делает,

предпочитаю использовать простой AJAX-запрос и метод renderJSON для динамических загрузок.