Condicionais em Thymeleaf

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, ondeignifica 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.