Qual è un modo semplice e valido per colorare righe alternate con freemarker?Alternanza dei colori delle righe della tabella in freemarker
È davvero il modo migliore?
<#assign row=0>
<#list items as item>
<#if (row % 2) == 0>
<#assign bgcolor="green">
<#else>
<#assign bgcolor="red">
</#if>
<tr style='background-color: ${bgcolor}'><td>${item}</td></tr>
<#assign row = row + 1>
</#list>
Ho provato a fare questo:
<#assign row=0>
<#list items as item>
<tr style='background-color: ${(row % 2) == 0 ? "green" : "blue"}'><td>${item}</td></tr>
<#assign row = row + 1>
</#list>
Ma a quanto pare non è possibile all'utente l'operatore ternario in là.
Nota: Credo che avrei dovuto accennarlo prima, ma non posso usare le classi CSS o javascript, poiché questo HTML sta entrando in un messaggio di posta elettronica.
Il _index è un trucco pulito. Grazie! – itsadok
E per favore usa il CSS "pulito": aggiungi la classe pertinente quando necessario (class = "odd" o class = "even") e poi lo stile nel CSS di conseguenza (cioè .even {background-color: gray;} .odd {background-color: white;} –
Inoltre, in 2.3.23, se i nomi delle classi sono 'even' e' odd', puoi scrivere '
Hmmm ... OK, questo è il migliore che è venuta in mente:
Dal silenzio assordante deduco che non c'è modo più bello di fare questo.
fonte
2009-02-04 11:30:18 itsadok
Ti rendi conto che si potrebbe usare i CSS o JavaScript per fare la stessa cosa: Non c'è alcuna necessità di utilizzare FreeMarker? –
Utilizzando FreeMarker, ci sono modi limitati di rispondere a questa domanda, ma se hai intenzione di usare i CSS da solo (che consente ancora la separazione degli interessi), quindi ecco un modo:
Inserire il seguente nella vostra foglio di stile:
quindi utilizzare la classe
tr
seguente per definire linee alternate:Ci sono many resources tra cui scegliere.
Modifica: Se il tuo codice HTML sta entrando in un messaggio di posta elettronica, non puoi essere sicuro che il client di posta del client consentirà qualsiasi codice HTML tu stia cercando di inserire. A questo punto, la soluzione migliore è utilizzare FreeMarker simile a come l'hai, tranne che è necessario rimuovere il tag
style
e utilizzare i colori per ogni riga utilizzandobgcolor="color"
nei tag<tr>
.fonte
2009-02-04 11:43:44
Ora ho bisogno di un modo per alternare "linea" e "lineb" - un problema molto simile ... – itsadok
+1 per l'e-mail suggerimento – itsadok
Una soluzione bolle poi riduce a questo:
Nel modello:
Tuttavia, come dichiarato in una risposta precedente, si può fare questo con i CSS, senza questa soluzione freemarker (vedi http://www.w3.org/Style/Examples/007/evenodd):
E poi basta usare un tavolo normale senza classe s sulle righe:
O con una tabella generata freemarker:
Quindi è tutto in CSS.
fonte
2010-02-16 19:54:31 prule
Con freemarker, è possibile utilizzare il
string
built-in:fonte
2010-02-16 20:24:11
Benvenuto a StackOverflow! Grazie per l'aggiunta di questo fantastico suggerimento! –
fonte
2010-05-19 18:30:43
Amore, molto più semplice della risposta accettata –
Accetto, bello –
Nota: sostituire "elemento" sopra con la variabile per l'elenco. Ad esempio, <#list array as riga> ... [line_index% 2] ...#list> – Nathan
È possibile simulare operatore ternario in FreeMarker utilizzando la seguente costruzione: $ {? Condizione di stringa (result_for_true, result_for_false)} .
fonte
2013-09-24 08:43:37
In FreeMarker 2.3.23:
fonte
2015-07-05 17:29:42 ddekany
Problemi correlati