Usando o Thymeleaf como mecanismo de modelo, é possível adicionar / remover dinamicamente uma classe CSS de / para um simples div
com a th:if
cláusula?
Normalmente, eu poderia usar a cláusula condicional da seguinte maneira:
<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a>
Estaremos criando um link para a página lorem ipsum , mas apenas se a cláusula de condição for verdadeira.
Procuro algo diferente: gostaria que o bloco estivesse sempre visível, mas com classes mutáveis de acordo com a situação.
Respostas:
Existe também
th:classappend
.Se
isAdmin
fortrue
, isso resultará em:fonte
th:class
substitui / reescreve seu atributo de classe.th:classappend
é o que você quer.th:classappend="${theRightClass}"
th:classappend
atributos. Máximo de um é permitido.Fatal error during parsing org.xml.sax.SAXParseException: Attribute "th:classappend" was already specified for element "img".
th:classremove
como remover uma única classe sem afetar as outras ou codificar uma lista de classes inteira em seu xml de ligação? Ou deixar qualquer classe dinâmica desativada e anexar condicionalmente é o único caminho a percorrer?Sim, é possível alterar uma classe CSS dinamicamente de acordo com a situação, mas não com
th:if
. Isso é feito com o operador elvis .fonte
Para este propósito e se eu não tiver uma variável booleana, eu uso o seguinte:
fonte
Outra resposta muito semelhante é usar "igual a" em vez de "contém".
fonte
Se você deseja apenas acrescentar uma aula em caso de erro, pode usar o
th:errorclass="my-error-class"
mencionado no documento .fonte
Só para acrescentar a minha opinião, caso possa ser útil para alguém. Isso é o que eu usei.
fonte
Ainda outro uso de th: class, o mesmo que @NewbLeech e @Charles postaram, mas simplificado ao máximo se não houver nenhum caso "else":
Não inclui o atributo de classe se # fields.hasErrors ('password') for false.
fonte
O que @Nilsi mencionou está perfeitamente correto. No entanto, adminclass e user class precisam ser colocados entre aspas simples, pois isso pode falhar devido ao Thymeleaf procurar por variáveis adminClass ou userclass que devem ser strings. Dito isto,
deveria ser: -
ou apenas:
fonte
Se você deseja adicionar ou remover uma classe de acordo, se o url contém determinados parâmetros ou não. Isso é o que você pode fazer
Se o url contiver 'casa', a classe ativa será adicionada e vice-versa.
fonte
Caso alguém esteja usando Bootstrap, consegui adicionar mais de uma classe:
fonte