4
respostas

Multiplos objetos iguais vindo da view por meio do form

Pessoal, estou criando uma sessão em que o usuário vai adicionando novos produtos sem sair da tela, por exemplo:

<form...>
    nome: <input name="nome">
    valor: <input name="descricao">
    ...
    <button type="submit">
</form>

Nesse caso, vou tendo diversos nome que chegam no meu controller como um vetor de nome[], além de descricao[];

Porém, se meu objeto produto é composto por nome e descricao, porque não consigo dizer ao spring que isso é uma List produtos?

class Produto {
    private String nome;
    private String descricao;

    //construtores e construtor default
    ...
    // getters e setters
    ...
}

Em meu controller, tenho o seguinte e não tem funcionado:

@PostMapping("/produtos")
public void recebeProdutosCadastraDeUmaVez(
    List<Produto> produtos,
    ...
){
    //Implementa o Controller
}

Como deveria ter feito?

4 respostas

É, não consegue mesmo :(. Você precisa criar uma classe, que tem atributo do tipo de List, gerar o getter e o setter e recebe esse novo tipo de objeto no seu parâmetor.

Hummm... Não entendi sua solução.

class Formulario {
   private List<Produto> produtos = new ArrayList<Produto>();

   //gets e sets
}

Esse é o parâmetro que você vai receber no método do controller.

Como ficaria meu controller? hmm... Ai eu receberia um objeto que nele vai ter uma lista de objetos? Sérá?!