Frage

Ich bin mit Groovy praktisch MarkupBuilder eine HTML-Seite aus verschiedenen Quelldaten zu bauen.

Eine Sache, die ich gut zu tun, bin zu kämpfen ist eine HTML-Tabelle erstellen und unterschiedliche Stilklassen zu den ersten und letzten Reihen anzuwenden. Dies ist wahrscheinlich am besten mit einem Beispiel veranschaulicht ...

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)
      }
    }
  }   
}

Im <tbody> Abschnitt, würde Ich mag die Klasse des <tr> Elements setzen, etwas anderes zu sein, je nachdem, ob das aktuelle Element in myList der ersten oder der letzte Punkt.

Gibt es eine nette-Groovy ified Weg, dies zu etwas ohne Rückgriff tun manuelle Artikel Indizes gegen die Listengröße zu überprüfen, so etwas wie eachWithIndex{} mit?

War es hilfreich?

Lösung

könnten Sie verwenden

if(it == myList.first()) {
   // First element
}

if(it == myList.last()) {
   // Last element
}

Andere Tipps

Die Antwort von sbglasius bereitgestellt wird, kann wie zu falschem Ergebnis führen, wenn die Liste enthält Redundanten Elemente so ein Element aus dem Innern der Liste kann die letzte entspricht.

Ich bin mir nicht sicher, ob sbglasius is() statt == verwenden könnte, aber eine richtige Antwort sein könnte:

myList.eachWithIndex{ elt, i ->
  if(i == 0) {
   // First element
  }

  if(i ==  myList.size()-1) {
   // Last element
  }
}

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

Arbeiten für Karten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top