Adicionando uma classe ao elemento HTML condicionalmente com tags de graals
Pergunta
Com tags, você pode fazer isso em um GSP:
<g:if test="${someBean?.aCondition}">
<div class="aSection">
...
</div>
</g:if>
O que eu realmente quero fazer é adicionar uma segunda 'classe' que contém o 'Display: Nenhum' ou 'Display: Block' Atributos com base no valor de '$ {algumbean? .ACondition}'.
O HTML final gostaria disso:
<div class="aSection hiddenItem">
...
</div>
(O div teria 'mostrado' para sua classe se $ {algumbean? .ACondition} é verdadeiro)
O CSS correspondente:
.shownItem
{
display: block;
}
.hiddenItem
{
display: none;
}
Qual é uma boa maneira de conseguir isso?
Solução
Bastante fácil:
<div class="aSection ${someBean?.aCondition ? 'shownItem':'hiddenItem'}">
...
</div>
Você pode usar os bloqueios $ {} dentro dos atributos HTML, sem problemas, apenas certifique-se de não usar nenhuma decisão dupla no seu bloco de expressão, pois isso confunde as coisas.
Outras dicas
Ou se você não deseja que o atributo seja exibido em alguma condição (digamos para uma tag de foco automático):
<input name="email" type="text" class="input-small" placeholder="Email" ${!flash.email ? 'autofocus="autofocus"':''} value="${flash.email}">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow