Adicionando uma classe ao elemento HTML condicionalmente com tags de graals

StackOverflow https://stackoverflow.com/questions/1772848

  •  21-09-2019
  •  | 
  •  

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?

Foi útil?

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
scroll top