No artigo anterior vimos como enviar dados para a visão, porém vimos somente como mandar uma String simples. E se quisermos mandar um objeto? Como fazemos?
Para isso, vamos criar uma classe chamada Product
que vai representar um produto. Ela vai ter os seguintes atributos, juntamente com seus respectivos getters e setters:
Vamos criar um novo Controller chamado ProductController
e vamos criar um método que vai retornar um objeto do tipo Product
:
Já vimos anteriormente como criar o controller e também como usar as anotações para falar ao SpringBoot a responsabilidade dessa classe.
Agora vamos ver o que mudou. Primeiro, criamos um objeto do tipo Product
e setamos os valores dos atributos para um exemplo qualquer. Depois, usamos o método addAttribute
do objeto model
para adicionar o objeto product
à visão. O primeiro parâmetro é o nome que vamos usar para acessar o objeto na visão, e o segundo é o objeto em si. Por fim, no método return chamamos a visão list
.
Se tentarmos rodar o código teremos um erro já que a visão list
não existe, logo vamos criar ela também.
Se olharmos para a expressão de variável, estamos usando o objeto product
e acessando seus atributos name
, description
e price
através da sintaxe ${object.attribute}
.
O que está acontecendo por debaixo dos panos é que ao acessar a expressão de variável
${product.name}
, o SpringBoot vai procurar o objetoproduct
que foi adicionado ao model e vai chamar o métodogetName()
para retornar o valor do atributoname
.
Reinicie novamente o servidor e acesse a URL /products
, vamos ver que o objeto foi passado para a visão e os valores dos atributos foram exibidos.