Обнаружение первого и последнего элемента внутри Groovy каждая крышка {} -- html поле с участием groovy поле с участием closures поле с участием markupbuilder пол Связанный проблема

Detecting first and last item inside a Groovy each{} closure


31
vote

проблема

русский

Я использую Groovy's Handy Markupbuilder для создания HTML-страницы из различных исходных данных.

Одна вещь, которую я изо всех сил пытаюсь сделать красиво, это построить HTML-таблицу и применить различные классы стилей к первому и последним строкам. Это, вероятно, лучше всего иллюстрируется пример ...

 <код> table() {   thead() {     tr(){       th('class':'l name', 'name')       th('class':'type', 'type')       th('description')     }   }   tbody() {     // Add a row to the table for each item in myList     myList.each {       tr('class' : '????????') {         td('class':'l name', it.name)         td('class':'type', it.type)         td(it.description)       }     }   }    }   

в <tbody> Раздел, я хотел бы установить класс <tr> элемента, чтобы быть чем-то другим, зависит ли текущий элемент <код> myList Первый или последний пункт.

Есть ли хорошее слово, если это способ сделать это, не прибегая к чему-то руководству, чтобы проверить указатели элемента против размера списка, используя что-то вроде <код> eachWithIndex{} ?

Английский оригинал

I am using Groovy's handy MarkupBuilder to build an HTML page from various source data.

One thing I am struggling to do nicely is build an HTML table and apply different style classes to the first and last rows. This is probably best illustrated with an example...

table() {   thead() {     tr(){       th('class':'l name', 'name')       th('class':'type', 'type')       th('description')     }   }   tbody() {     // Add a row to the table for each item in myList     myList.each {       tr('class' : '????????') {         td('class':'l name', it.name)         td('class':'type', it.type)         td(it.description)       }     }   }    } 

In the <tbody> section, I would like to set the class of the <tr> element to be something different depending whether the current item in myList is the first or the last item.

Is there a nice Groovy-ified way to do this without resorting to something manual to check item indexes against the list size using something like eachWithIndex{}?

</div
           

Список ответов

53
 
vote
vote
Лучший ответ
 

Вы можете использовать

 <код> if(it == myList.first()) {    // First element }  if(it == myList.last()) {    // Last element }   
 

You could use

if(it == myList.first()) {    // First element }  if(it == myList.last()) {    // Last element } 
</div
 
 
         
         
16
 
vote

Ответ, предоставленный SBGLASIUS, может привести к неправильному результату, как когда список содержит элементы резервных элементов, поэтому элемент изнутри списка может равняться последнему.

Я не уверен, что SBGLASIUS может использовать <код> is() вместо <код> == , но правильный ответ может быть:

 <код> myList.eachWithIndex{ elt, i ->   if(i == 0) {    // First element   }    if(i ==  myList.size()-1) {    // Last element   } }   
 

The answer provided by sbglasius may lead to incorrect result like when the list contains redundants elements so an element from inside the list may equals the last one.

I'm not sure if sbglasius could use is() instead of == but a correct answer could be :

myList.eachWithIndex{ elt, i ->   if(i == 0) {    // First element   }    if(i ==  myList.size()-1) {    // Last element   } } 
</div
 
 
 
 
2
 
vote

Если (it.after.value! = null) { ...... }

работает для карт

 

if (it.after.value != null) { ...... }

Works for maps

</div
 
 

Связанный проблема

13  Отправьте данные FORM HTML в базу данных SQL через PHP (используя mysqli)  ( Send html form data to sql database via php using mysqli ) 
Я хочу отправить данные, введенные в HTML-форму в мою базу данных SQL, то есть создайте новую строку, приписываю определенные значения в определенные столбцы....

6  Нет прокрутки после закрытия лайтбокса (Blueimp)  ( No scrolling after closing lightbox blueimp ) 
Я построил свой собственный сайт и хотел добавить разные галереи, поэтому я попробовал Blueimp. Он отлично работает, но когда я закрываю лайтбокс, я больше не...

3  Как поставить DIV в центре другого дивы?  ( How to put a div at center of another div ) 
Я хотел бы иметь один div в центре другого div горизонтально. <код> <div id="container"> <div id="centered"> hello world; </...

0  Как сделать раскрывающееся меню горизонтальное  ( How to make a drop down menu horizontal ) 
Я не уверен, что это возможно, но у меня есть кнопка, называемая фруктами. Когда я нажимаю на него, 4 фруктовые кнопки появляются вертикально вниз, но я хочу,...

6  Предотвращение подачи двойной формы [дубликат]  ( Preventing double form submissions ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Динамический расчет расстояния для маршрута  ( Dynamic distance calculation for route ) 
Я хочу реализовать форму, где вы вводите отправку и пункт назначения, а затем, используя API Google Maps JavaScript, он будет отображать расстояние в виде зна...

-1  Перемещение и переименование загруженного файла  ( Moving and renaming an uploaded file ) 
Извините, если это легко, но я немного нового для программирования, поэтому у меня проблемы с переименованием временного загруженного файла. Вот мой код: ht...

0  Список списка с двумя столбцами в JSP  ( List box with two columns in jsp ) 
Коробка в списке с двумя столбцами в JSP, а также можно ли сортировать порядок двух столбцов, таких как восходящий или нисходящий, на основе требований каждог...

0  Конвертировать GNOME-HELP (YELP) XML в статический HTML с XSLT  ( Convert gnome help yelp xml to static html with xslt ) 
Некоторые из приложений GNOME на Linux используют браузер справки под названием <код> yelp . Например, Gnome-Calculator, <Код> gcalctool , имеет свои файлы сп...

1  Удалить таблицу TR при сохранении AddClass  ( Remove table tr while maintaining addclass ) 
Хорошо, у меня есть таблица TR, которая удаляется, когда вы нажимаете кнопку. Я использую Animate.css и хотел бы добавить класс после того, как мой запрос AJA...

0  Скрывая неупорядоченный список, когда у него нет элементов  ( Hiding an unordered list when it has no elements ) 
У меня есть проблема, которая кажется сначала, как общий язык No-Brainer и легкая задача. У меня есть плагин JavaScript на моей странице, который генерирует...

1  Добавление события onload для GridView  ( Adding an onload event for a gridview ) 
У меня есть одна сетка, вот HTML-код: <код> <table cellspacing="0" border="1" style="border-collapse:collapse;" id="grid1" rules="all"> <tbody><t...

0  У меня проблема с переполнением моей контактной формы при отображении на мобильном  ( Im having an issue with my contact form overflowing when displayed on a mobile ) 
Выпуск в основном, когда у меня есть эта форма, отображаемая на мобильном телефоне, когда я перехожу на ввод текста в форму, Textarea слишком много расширяетс...

1  Как нажать на изображение, чтобы показать изображения с функцией  ( How to click on an image to show images with a function ) 
Попытка нажать на Magic8, но счастливые, грустные и удивленные картинки не будут отображаться ниже линии. Что я сделал не так? Я сохранил изображения в Random...

1  Я создал выпадающий список, и он не перейдет на вершину экрана?  ( I created a drop down list and it wont move to the top of the screen ) 
Эй, я начинающий HTML & AMP; CSS и я не смог найти решение для моей проблемы Я пытался много раз исправить, добавив разные позиции, но это просто разрушает ег...

Связанный проблема

13  Отправьте данные FORM HTML в базу данных SQL через PHP (используя mysqli) 
6  Нет прокрутки после закрытия лайтбокса (Blueimp) 
3  Как поставить DIV в центре другого дивы? 
0  Как сделать раскрывающееся меню горизонтальное 
6  Предотвращение подачи двойной формы [дубликат] 
0  Динамический расчет расстояния для маршрута 
-1  Перемещение и переименование загруженного файла 
0  Список списка с двумя столбцами в JSP 
0  Конвертировать GNOME-HELP (YELP) XML в статический HTML с XSLT 
1  Удалить таблицу TR при сохранении AddClass 
0  Скрывая неупорядоченный список, когда у него нет элементов 
1  Добавление события onload для GridView 
0  У меня проблема с переполнением моей контактной формы при отображении на мобильном 
1  Как нажать на изображение, чтобы показать изображения с функцией 
1  Я создал выпадающий список, и он не перейдет на вершину экрана?