Vimos no último artigo dessa série como enviar e exibir variáveis Java em templates com o Thymeleaf. Continuando a série, agora veremos como utilizar estruturas de condição e repetição no Thymeleaf.
Formação Desenvolvedor Java
Conhecer a formaçãoEstruturas de condição
Para utilizar estruturas de condição no Thymeleaf é bem simples. Imagine que temos, em uma variável, a representação de um usuário com seu ID, nome e tipo do usuário (cliente ou funcionário) e queremos exibir em um template a frase “Bem-vindo cliente” ou “Bem-vindo funcionário” a depender do seu tipo.
Este é um exemplo claro do uso de estruturas condicionais no Thymeleaf:
package br.com.treinaweb.estruturasrepeticaocondicaothymeleaf.controllers;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home(ModelMap model) {
Map<String, String> usuario = new HashMap<>();
usuario.put("id", "1");
usuario.put("nome", "João da Silva");
usuario.put("tipo", "funcionario");
model.addAttribute("usuario", usuario);
return "home";
}
}
Ao enviar a variável usuario
para o template home.html
, agora só é preciso verificar o valor na chave tipo:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Thymeleaf - Estruturas de Condição</title>
</head>
<body>
<h1 th:if="${usuario.tipo == 'cliente'}">Bem-vindo cliente</h1>
<h1 th:if="${usuario.tipo == 'funcionario'}">Bem-vindo funcionário</h1>
</body>
</html>
Agora, ao acessar o template home.html
no navegador, teremos o seguinte resultado:
A sintaxe das estruturas de condição no Thymeleaf é bem simples, basta colocar o atributo th:if
na tag em que deseja condicionar a exibição.
Estrutura de repetição
O uso de estruturas de repetição também é algo muito simples no Thymeleaf. Imagine que temos uma lista de nomes de usuários e queremos percorrê-la para exibir em nossa página.
Para isso, basta utilizar um forEach
e percorrer toda a lista exibindo os nomes como podemos ver abaixo:
package br.com.treinaweb.estruturasrepeticaocondicaothymeleaf.controllers;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home(ModelMap model) {
List<String> usuarios = new ArrayList<>();
usuarios.add("Isabela Rosa Eliane Carvalho");
usuarios.add("Luna Stella Freitas");
usuarios.add("Edson Luís Gael Caldeira");
usuarios.add("Aline Mariana Nicole Lima");
usuarios.add("Kauê Kaique Brito");
model.addAttribute("usuarios", usuarios);
return "home";
}
}
Agora, para exibir o conteúdo da variável usuarios
no template, utilizamos a seguinte sintaxe:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Thymeleaf - Estruturas de Condição</title>
</head>
<body>
<h1 th:each="usuario : ${usuarios}" th:text="${usuario}"></h1>
</body>
</html>
Agora, ao acessar o template home.html
no navegador, teremos o seguinte resultado:
As estruturas de repetição facilitam (e muito) quando precisamos exibir diversos dados e não queremos duplicidade de código, já que uma lista será percorrida e, para cada elemento, será impresso seu valor.
Curso Spring Framework - Fundamentos
Conhecer o cursoConclusão
Como vimos neste artigo, o uso de estruturas de condição e repetição no Thymeleaf é bem simples e facilita (e muito) a criação dos templates em uma aplicação Spring Boot. No próximo artigo dessa série, veremos como utilizar o Thymeleaf Fragments, um ótimo recurso para reaproveitamento de código em nossos templates.