Variáveis de caminho de primavera com Thymeleaf
1. Introdução
Neste breve tutorial, vamos aprender como usarThymeleaf para criar URLs usando variáveis de caminho Spring.
Usamos variáveis de caminho quando queremos passar um valor como parte da URL. Em um controlador Spring, acessamos esses valores usando a anotação@PathVariable.
2. Usando variáveis de caminho
Primeiro, vamos configurar nosso exemplo criando uma classeItem simples:
public class Item {
private int id;
private String name;
// Constructor and standard getters and setters
}
Agora, vamos criar nosso controlador:
@Controller
public class PathVariablesController {
@GetMapping("/pathvars")
public String start(Model model) {
List- items = new ArrayList
- ();
items.add(new Item(1, "First Item"));
items.add(new Item(2, "Second Item"));
model.addAttribute("items", items);
return "pathvariables/index";
}
@GetMapping("/pathvars/single/{id}")
public String singlePathVariable(@PathVariable("id") int id, Model model) {
if (id == 1) {
model.addAttribute("item", new Item(1, "First Item"));
} else {
model.addAttribute("item", new Item(2, "Second Item"));
}
return "pathvariables/view";
}
}
Em nosso modeloindex.html, vamos percorrer nossos itens e criar links chamando o métodosinglePathVariable:
O código que acabamos de criar cria URLs como este:
http://localhost:8080/pathvars/single/1
Essa é a sintaxe padrão do Thymeleaf para usar expressões em URLs.
Também podemos usar a concatenação para alcançar o mesmo resultado:
3. Usando várias variáveis de caminho
Agora que cobrimos os fundamentos da criação de um URL de variável de caminho no Thymeleaf, vamos cobrir rapidamente o uso de múltiplos.
Primeiro, vamos criar uma classeDetail e modificar nossa classeItem para ter uma lista delas:
public class Detail {
private int id;
private String description;
// constructor and standard getters and setters
}
A seguir, vamos adicionar uma lista deDetail aItem:
private List details;
Agora, vamos atualizar nosso controlador para adicionar um método usando várias anotações@PathVariable:
@GetMapping("/pathvars/item/{itemId}/detail/{dtlId}")
public String multiplePathVariable(@PathVariable("itemId") int itemId,
@PathVariable("dtlId") int dtlId, Model model) {
for (Item item : items) {
if (item.getId() == itemId) {
model.addAttribute("item", item);
for (Detail detail : item.getDetails()) {
if (detail.getId() == dtlId) {
model.addAttribute("detail", detail);
}
}
}
}
return "pathvariables/view";
}
Finalmente, vamos modificar nosso modeloindex.html para criar URLs para cada registro de detalhes:
4. Conclusão
Neste tutorial rápido, aprendemos como usar o Thymeleaf para criar URLs com variáveis de caminho. Começamos criando um URL simples com apenas um. Mais tarde, expandimos nosso exemplo para usar várias variáveis de caminho.
O código de exemplo está disponívelover on GitHub.