Condicionais em Thymeleaf
1. Visão geral
Neste tutorial, vamos dar uma olhada emdifferent types of conditionals available in Thymeleaf.
Para uma introdução rápida ao Thymeleaf, consulte estearticle.
2. Dependências do Maven
Vamos começar com as dependências do Maven que são necessárias para usar o Thymeleaf junto com o Spring:
org.thymeleaf
thymeleaf
3.0.9.RELEASE
org.thymeleaf
thymeleaf-spring5
3.0.9.RELEASE
Para outras versões do Spring, o slibrarythymeleaf-springX correspondente deve ser usado, ondeX ignifica a versão do Spring. Observe também queSpring 5 is supported starting with 3.0.8.RELEASE, by Thymeleaf.
As versões mais recentes das dependências necessárias podem ser encontradashere.
3. Condicionais Thymeleaf
Temos que distinguir entre condicionais que nos permitem renderizar texto dentro de um elemento HTML dependendo de uma condição e aquelas que controlam a instanciação do próprio elemento HTML.
Vamos definir nossa classe smodelTeacher que usaremos ao longo deste artigo:
public class Teacher implements Serializable {
private String gender;
private boolean isActive;
private List courses = new ArrayList<>();
private String additionalSkills;
3.1. Operador Elvis
O operador Elvis?: permite a renderização de texto em um elemento HTML, dependendo do estado atual de uma variável.
Podemos usar expressões padrão para fornecer um texto padrão se uma variável fornull:
No exemplo superior, queremos exibir o conteúdo da variávelteacher.additionalSkillse ela estiver definida e queremos que o texto “UNKNOWN” seja renderizado de outra forma.
Também é possível exibir texto arbitrário dependendo de uma expressão booleana:
Podemos consultar uma variável booleana simples como no exemplo anterior, mas também são possíveis comparações de strings e verificações de intervalo.
Os seguintes comparadores e suas representações textuais são suportados> (gt), >= (ge), < (lt), ⇐ (le), == (eq) and != (ne).
3.2. Se - a menos que
Os atributosth:ifand_th: except_ nos permitem renderizar um elemento HTML dependendo de uma condição fornecida:
Female
Male
Se o conteúdo da variávelteacher.genderfor igual aF,, então o elemento span com o valor “Female” é renderizado.
Caso contrário, o elemento com “Male” é renderizado. Essa configuração é comparável a umaif-else clause presente na maioria das linguagens de programação.
3.3. Switch - Case
Se houver mais de dois resultados possíveis de uma expressão, podemos usar os atributos de satéliteth:switch andth:case para renderização condicional dos elementos HTML:
NO COURSES YET!
Dependendo do tamanho da barrateacher.courses, exibimos um texto padrão, o curso único ou todos os cursos disponíveis. O asterisco(*) é usado para a opção padrão.
4. Conclusão
Neste breve artigo, investigamos os diferentes tipos de condicionais Thymeleaf e apresentamos alguns exemplos simplificados mostrando as várias opções.
Os exemplos podem ser encontrados emGitHub project.