РЕДАКТИРОВАТЬ: Потратив время на написание большого ответа, в вашем коде есть ошибка!
В вашем теге #list у вас должно быть items
, а не pages
. Ваш код должен читать.
#{list items:results.startPage..results.endPage, as:'page'}
${page}
#{/list}
Для тех, кому интересно, как работает переменная Groovy Range, ниже приведено описание, а не я удаляю длинный ответ!
Я думаю, что вы используете метод диапазона неправильно. Конструкция Groovy Range для цикла for позволяет вам переходить от одного значения к другому. Обычно это целое число или строка, а не список.
Итак, если вы сделаете следующее, будет напечатано от 0 до 10
#{list items:0..10, as:'i'}
${i}
#{/list}
Однако, значения могут быть установлены в вашем контроллере. Поэтому, если вы хотите использовать переменные start
и end
, установленные в вашем контроллере (предположите, что они установлены в 0 и 10), вы можете сделать следующее.
#{list items:start..end, as:'i'}
${i}
#{/list}
Мой контроллер для проверки этой конструкции выглядит следующим образом, и он отлично работает.
public static void index() {
int start = 0;
int end = 10;
render(start, end);
}
При этом будут выводиться те же цифры от 0 до 10. Даже если я отправлю эти переменные через инкапсулированный в класс класс, он все равно будет работать нормально.
Вы уверены, что startPage
и endPage
являются целочисленными значениями?