Variáveis ​​de caminho de primavera com Thymeleaf

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.