Domanda

Sto usando comodo MarkupBuilder Groovy per costruire una pagina HTML da diversi dati di origine.

Una cosa Ho difficoltà a fare bene è costruire una tabella HTML e applicare diverse classi di stile per le prime e le ultime righe. Questo è probabilmente meglio illustrato con un esempio ...

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

Nella sezione <tbody>, vorrei impostare la classe dell'elemento <tr> di essere qualcosa di diverso a seconda se l'elemento corrente nella myList è il primo o l'ultimo elemento.

C'è un bel modo per fare questo senza ricorrere a qualcosa di manuale per verificare gli indici voce contro le dimensioni dell'elenco usando qualcosa come eachWithIndex{} Groovy-ified?

È stato utile?

Soluzione

Si potrebbe utilizzare

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

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

Altri suggerimenti

La risposta fornita da sbglasius può portare a risultati non corretti come quando l'elenco contiene iperstatiche elementi in modo un elemento da dentro la lista può uguali l'ultimo.

Non sono sicuro se sbglasius poteva usare is() invece di == ma una risposta corretta potrebbe essere:

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

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

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

Opere per le mappe

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top