Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvidas sobre form:input

Boa noite, gostaria que pudessem me tirar uma dúvida, sobre o funcionamento do <form:input

Gostaria de saber se tem como acessar por exemplo

<form:input path="fornecedor.produtos.nome" />

Sendo que;

Classe Entrada --------

package br.com.model;

import java.util.Calendar;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import org.springframework.format.annotation.DateTimeFormat;

@Entity
public class EntradaProdutosAvariados {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @DateTimeFormat
    private Calendar dataVencimento;
    private int quant;
    private String fornecedorEntrado;

    @ManyToOne
    public Fornecedor fornecedor;                                                        // public, para não precisar fazer o set por aqui e sim pela própria classe que está como atributo.



    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Calendar getDataVencimento() {
        return dataVencimento;
    }

    public void setDataVencimento(Calendar dataVencimento) {
        this.dataVencimento = dataVencimento;
    }

    public int getQuant() {
        return quant;
    }

    public void setQuant(int quant) {
        this.quant = quant;
    }

    public String getFornecedorEntrado() {
        return fornecedorEntrado;
    }

    public void setFornecedorEntrado(String fornecedorEntrado) {
        this.fornecedorEntrado = fornecedorEntrado;
    }

    public Fornecedor getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
    }



}

Classe Fornecedor --------

package br.com.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

@Entity
public class Fornecedor {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String nome;

    @OneToMany(mappedBy="fornecedor")
    private List<EntradaProdutosAvariados> entrada;

    @ManyToMany
    private List<Produto> produtos;


    public List<Produto> getProdutos() {
        return produtos;
    }
    public void setProdutos(Produto produto) {
        this.produtos.add(produto);
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

}

Classe Produto ----------

package br.com.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;

@Entity
public class Produto {

    @Id
    private String codBarra;
    private String nome;
    private int quantTotal;

                                                    // mappedBy = Indica que o outro lado da relação que irá criar uma tabela de relacionamento (e alem disso caso faça alguma alteração na dona do relacionamento irá vim aqui também ou é o CASCADE)




    public String getCodBarra() {
        return codBarra;
    }

    public void setCodBarra(String codBarra) {
        this.codBarra = codBarra;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getQuantTotal() {
        return quantTotal;
    }

    public void setQuantTotal(int quantTotal) {
        this.quantTotal = quantTotal;
    }




}

Classe EntradaController

package br.com.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.dao.EntradaAvariadosDAO;
import br.com.model.EntradaProdutosAvariados;

@Controller
@RequestMapping("/entradaAvariados")
public class EntradaAvariadosController {

    @Autowired
    private EntradaAvariadosDAO entradaAvariadosDao;


    @RequestMapping(method=RequestMethod.GET)
    public String indexAvariados(EntradaProdutosAvariados entradaProdutosAvariados){
        return "entradas/entrada_avariados";
    }


    // MÉTODOS
    @RequestMapping(value="add",method=RequestMethod.POST)
    public ModelAndView adicionaAvariados(EntradaProdutosAvariados entradaProdutosAvariados, RedirectAttributes attributes){

        entradaAvariadosDao.grava(entradaProdutosAvariados);

        ModelAndView mv = new ModelAndView("redirect:/entradaAvariados");
        attributes.addFlashAttribute("sucesso", "Fornecedor adicionado com sucesso");

        return mv;

    }

}

Ou sendo, gostaria que esse input percorresse esse caminho para fazer a injeção no produto da classe Fornecedor que está dentro da classe Entrada, teria como?

2 respostas
solução!

Opa, boa noite. Você tem uma lista de produtos no fornecedor, a sintaxe precisa ser algo como fornecedor.produtos[0].nome e por aí vai.

Muito obrigado pela ajuda, mais uma vez gostaria de agradecer pelos excelentes cursos e ajuda que vocês da Alura me propuseram.