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

HTTP Status 400 – Bad Request

Estou tentanto criar um formulario onde cadastro um produto para um cliente ja existente, o problema é que quando tento cadastrar o produto da o seguinte erro:

HTTP Status 400 – Bad Request
Type Status Report

Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

Apache Tomcat/9.0.21

Segue meu form.jsp do produto

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<%@ page isELIgnored="false"%>
<meta charset="ISO-8859-1">
<title>Controle de Estoque</title>
</head>
<body>
        <form action="/controle-de-estoque/produtos"
            method="POST">
            <div>
                <label>Referência:</label> <input type="text" name="referencia">
            </div>
            <div>
                <label>Descrição:</label>
                <textarea rows="3" cols="20" name="descricao"></textarea>
            </div>
            <div>
                <label>Tamanho:</label> <input type="text" name="tamanho">
            </div>
            <div>
                <label>cor:</label> <input type="text" name="cor">
            </div>
            <div>
                <label>Estoque:</label> <input type="text" name="estoque">
            </div>
            <div>
                <input type="text" name="cliente" value="${cliente}" />
            </div>

            <button type="submit">Cadastrar</button>
        </form>
</body>
</html>

A classe ProdutoController

@Controller
@RequestMapping("/produtos")
public class ProdutoController {

    @Autowired
    private ClienteDao clienteDao;

    @Autowired
    private ProdutoDao produtoDao;

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ModelAndView listaProdutos(@PathVariable Integer id) {
        ModelAndView modelAndView = new ModelAndView("produtos/lista");
        Cliente cliente = clienteDao.getCliente(id);
        modelAndView.addObject("cliente", cliente);
        return modelAndView;
    }

    @RequestMapping(value = "/{id}/form")
    public ModelAndView form(@PathVariable Integer id) {
        ModelAndView modelAndView = new ModelAndView("produtos/form");
        Cliente cliente = clienteDao.getCliente(id);
        List<Produto> produtos = cliente.getProdutos();
        modelAndView.addObject("produtos", produtos);
        modelAndView.addObject("cliente", cliente);
        return modelAndView;
    }

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView gravarProduto(Produto produto) {
        produtoDao.persist(produto);

        return new ModelAndView("redirect:/produtos") ;
    }

}

A classe Cliente

@Entity
public class Cliente {

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

    @OneToMany(mappedBy = "cliente")
    private List<Produto> produtos;

    public Integer getId() {
        return id;
    }

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

    public String getNome() {
        return nome;
    }

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

    public List<Produto> getProdutos() {
        return produtos;
    }

    public void setProdutos(List<Produto> produtos) {
        this.produtos = produtos;
    }

    @Override
    public String toString() {
        return "Cliente [nome=" + nome + "]";
    }
}

A classe Produto

@Entity
public class Produto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;    
    private String referencia;
    private String descricao;
    private String tamanho;
    private String cor;
    private Integer estoque;

    @ManyToOne
    private Cliente cliente;


    public String getReferencia() {
        return referencia;
    }
    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }
    public String getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public String getTamanho() {
        return tamanho;
    }
    public void setTamanho(String tamanho) {
        this.tamanho = tamanho;
    }
    public Cliente getCliente() {
        return cliente;
    }
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
    public String getCor() {
        return cor;
    }
    public void setCor(String cor) {
        this.cor = cor;
    }
    public Integer getEstoque() {
        return estoque;
    }
    public void setEstoque(Integer estoque) {
        this.estoque = estoque;
    }    
}
2 respostas
solução!

Ja resolvido

Boa tarde, Nícolas! Como vai?

Que bom que resolveu! Inclusive, vc poderia compartilhar o que estava ocasionando o problema e a sua solução conosco? Assim se outros alunos caírem na mesma situação no futuro poderão encontrar no seu tópico o caminho para a luz do conhecimento!

Grande abraço e bons estudos, meu aluno!