¿Cuál es una manera buena y sencilla de tener una fila de colores alternativa con freemarker?Alternando los colores de la fila de la tabla en freemarker
¿Es esta la mejor manera?
<#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>
He intentado hacer esto:
<#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>
Pero al parecer, no puede el usuario operador ternario en ese país.
Nota: supongo que debería haberlo mencionado antes, pero no puedo utilizar las clases CSS o Javascript, ya que esto va HTML en un mensaje de correo electrónico.
El _index es un buen truco. ¡Gracias! – itsadok
Y utilice CSS "limpio": agregue la clase relevante cuando sea necesario (clase = "impar" o clase = "par") y luego escriba el estilo en el CSS en consecuencia (es decir, .even {background-color: gray;} .odd {background-color: white;} –
Además, en 2.3.23, si los nombres de las clases son 'par' y' impar', puede escribir '
Hmmm ... bien, este es el mejor que he llegado con:
Desde el silencio ensordecedor deduzco que no hay manera más agradable de hacer esto.
Fuente
2009-02-04 11:30:18 itsadok
Te das cuenta de que se puede utilizar CSS o JavaScript para hacer la misma cosa: No hay necesidad de usar FreeMarker? –
Usando FreeMarker, hay formas limitadas de responder a esta pregunta, pero si usted está queriendo utilizar CSS solos (que todavía permite la separación de las preocupaciones), entonces aquí es una manera:
Ponga lo siguiente en su hoja de estilo:
continuación, utilizar el
tr
clase siguiente para definir líneas alternas:Hay many resources para elegir también.
Editar: Si su HTML entra en un correo electrónico, entonces no puede estar seguro de que el cliente de correo electrónico del cliente permita el HTML que esté tratando de poner en él. Su mejor apuesta en ese momento es usar FreeMarker de manera similar a como lo tiene, excepto que necesita eliminar la etiqueta
style
, y usar colores para cada fila usandobgcolor="color"
en sus etiquetas<tr>
.Fuente
2009-02-04 11:43:44
Ahora necesito una forma de alternar "linea" y "lineb" - un problema muy similar ... – itsadok
+1 para la sugerencia de correo electrónico – itsadok
Una solución entonces se reduce a esto:
En su plantilla:
Sin embargo, como se ha dicho en una respuesta anterior, se puede hacer esto con CSS, sin que esta solución FreeMarker (ver http://www.w3.org/Style/Examples/007/evenodd):
Y a continuación, sólo tiene que utilizar una tabla normal sin classe s en las filas:
O con una tabla generada FreeMarker:
Así que todo está en el CSS.
Fuente
2010-02-16 19:54:31 prule
Con FreeMarker, puede utilizar la
string
incorporada:Fuente
2010-02-16 20:24:11
Bienvenido StackOverflow! Gracias por agregar este gran truco! –
Fuente
2010-05-19 18:30:43
Me encanta esto, mucho más simple que la respuesta aceptada –
De acuerdo, agradable. –
Nota: Reemplace el "elemento" anterior con la variable de la lista. Por ejemplo, <#list array as line> ... [line_index% 2] ...#list> – Nathan
Puede simular operador ternario en FreeMarker utilizando la siguiente construcción: $ {? Condición de cadena (result_for_true, result_for_false)} .
Fuente
2013-09-24 08:43:37
En FreeMarker 2.3.23:
Fuente
2015-07-05 17:29:42 ddekany
Cuestiones relacionadas