2009-11-20 12 views
8

Con las etiquetas, usted puede hacer esto en un gsp:Adición de una clase de elemento HTML condicionalmente con etiquetas Grails

<g:if test="${someBean?.aCondition}"> 
    <div class="aSection"> 
    ... 
    </div> 
</g:if> 

Lo que realmente quiero hacer es añadir una segunda 'clase' que, o bien contiene el 'display : los atributos none 'o' display: block 'basan el valor de' $ {someBean? .aCondition} '.

El final de HTML desea:

<div class="aSection hiddenItem"> 
... 
</div> 

(el div tendría 'shownItem' por su clase si $ {someBean .aCondition?} Es cierto)

El CSS correspondiente:

.shownItem 
{ 
    display: block; 
} 
.hiddenItem 
{ 
    display: none; 
} 

¿Cuál es una buena forma de lograrlo?

Respuesta

18

bastante fácil:

<div class="aSection ${someBean?.aCondition ? 'shownItem':'hiddenItem'}"> 
... 
</div> 

Usted puede utilizar $ {} bloques dentro atributos HTML, no hay problema, sólo asegúrese de no utilizar ningún comillas dobles en su bloque de expresión, ya que confunde las cosas.

+0

cómo agregar varias condiciones a este .. ¿es posible –

+1

@Norman que es una bloque de código groovy en el $ {}, entonces usted podría hacer: $ {(someBean.value2 == 2 && someBean.value3 == 3)? 'shownItem': 'hiddenItem'}, pero se está volviendo complicado. ¿Quizás pueda hacer esa lógica en el controlador y pasar el resultado al GSP usando el modelo? – billjamesdev

+0

para cada condición Quiero mostrar una clase diferente no exactamente solo entre dos opciones ¿se puede hacer eso? –

5

O si no desea que el atributo que aparece en absoluto en algunos (decir con una etiqueta de enfoque automático) condición:

<input name="email" type="text" class="input-small" placeholder="Email" ${!flash.email ? 'autofocus="autofocus"':''} value="${flash.email}"> 
+0

podemos usar condiciones múltiples para esto –

Cuestiones relacionadas