Trabalhando com booleano no Thymeleaf
1. Introdução
Neste tutorial rápido, veremos como trabalhar com valores booleanos no Thymeleaf.
Antes de mergulharmos nos detalhes, o básico do Thymeleaf pode ser encontrado emthis write-up.
2. Avaliando expressões como booleanos
In Thymeleaf, any value can be evaluated to a boolean. Temos alguns valores interpretados comofalse:
-
null
-
o valor booleanofalse
-
o número0
-
o personagem _0_
-
as cordas“false”,“off”areia“no”
Qualquer outro valor é avaliado emtrue.
3. Usando booleanos como condições de renderização
Para renderizar um elemento HTML condicionalmente, temos duas opções:th:if eth:unless attributes.
Seu efeito é exatamente o oposto - Thymeleaf renderizará um elemento com umth:if attribute apenas se o valor do atributo fortrue areia comth: a menos que o atributo apenas se seu valor forfalse:
will be rendered
won't be rendered
won't be rendered
will be rendered
4. Operadores lógicos e condicionais
Além disso, podemos usar os três operadores lógicos clássicos no Thymeleaf:
-
and
-
or
-
negação com a palavra-chavenot entre o “!” símbolo
Podemos usar esses operadores dentro de expressões variáveis ou combinar várias expressões variáveis com eles:
The weather is bad
The weather is bad
The weather is good
The weather is good
It's warm
It's warm
It's warm
It's warm
Também podemos usar operadores condicionais:if-then,if-then-else e os operadores padrão.
O operadorif-then-else é o ternário usual, ou?: operador:
It's
Além disso, o operadorif-then é a versão simplificada onde não temos outra parte:
O operador padrão retorna o primeiro operando se não fornull e o segundo caso contrário:
O operador padrão também é chamado de operador Elvis devido à sua forte semelhança com o penteado de Elvis.
Observe que o operador Elvis faz apenas umnull check, ele não avalia o primeiro operando como booleano.
5. #bools Utility Object
O#bools é um objeto utilitário que está disponível em expressões por padrão e tem alguns métodos úteis:
-
#bools.isTrue(obj) retorna se o argumento foi avaliado paratrue
-
#bools.isFalse(obj) retorna se o argumento foi avaliado parafalse
-
#bools.xxxIsTrue(collection) converte os elementos do argumento para booleanos com#bools.isTrue() e os coleta para o mesmo tipo de coleção
-
#bools.xxxIsFalse(collection) converte os elementos do argumento para booleanos com#bools.isFalse() e os coleta para o mesmo tipo de coleção
-
#bools.xxxAnd(collection) retornatrue se todos os elementos no argumento forem avaliados paratrue
-
#bools.xxxOr(collection) retornatrue se qualquer elemento no argumento for avaliado paratrue
Nos métodos acima,xxx can pode serarray,list orset, dependendo do argumento do método (e valor de retorno no caso dexxxIsTrue() andxxxIsFalse() )
6. Conclusão
Neste artigo, vimos como o Thymeleaf interpreta valores como booleanos, também como podemos renderizar elementos condicionalmente e trabalhar com expressões booleanas.
Como de costume, o código (com mais exemplos) está disponívelover on Github.