8
respostas

Spring MVC 1 - ProdutosController

Pessoal, eu estou fazendo o curso de MVC e ao clicar no botao cadastrar na produtos/form eu tomo erro 400 e a controller nao eh acionada, eu tentei baixar o projeto da aula seguinte que esta disponivel logo no inicio, fiz o mesmo teste e o erro persistiu mesmo com o codigo fonte do alura.

Voces conseguiriam me ajudar de alguma forma? existe alguma configuracao que pode estar conflitando?

8 respostas

Olá, Fábio. Tem como postar a classe ProdutosController aqui?

package br.com.casadocodigo.loja.controllers;

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;

@Controller public class ProdutosController {

@RequestMapping("/produtos/form")
public String form() {
    return "produtos/form";
}

@RequestMapping("/produtos")
public String grava(String titulo, String descricao, int paginas){
    System.out.println(titulo);
    System.out.println(descricao);
    System.out.println(paginas);

    return "ok";
}

}

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<form action="/casadocodigo/produtos" method="POST">
    <div>
        <label>Título</label> <input type="text" name="titulo" />
    </div>
    <div>
        <label>Descrição</label>
        <textarea rows="10" cols="20" name="descricao"></textarea>
    </div>
    <div>
        <label>Páginas</label> <input type="text" name="paginas" />
    </div>
    <button type="submit">Cadastrar</button>
</form>

Você tem ok.jsp dentro da pasta views/produtos ou apenas views?

Eu tenho a form só, porem nessa parte do curso o professor tmbm não tem, ele toma um erro 404, mas no console imprime o nome das variáveis e a controller é chamada normalmente, no meu isso não ocorre. Eu debuguei o código e a controller não é chamada. Eu tentei baixar o código pronto no inicio da aula 3 e a Controller continua sem ser chamada.

Você acessa o formulário com a URL: localhost:8080/casadocodigo/produtos/form ?

Sim, o form entra de boa, ele bate na controller normal, eu preenchi ele tranquilo, quando eu clico no botão Cadastrar que dá o problema

Atualizacao do meu problema, quando eu bato na URL direto, ele entra na ProdutosController, mas quando ela eh acionada via botao, ele da o problema de bad request

Tente o seguinte:

Cole essa linha no topo do form.jsp: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

E a action do form, substitua por isso: action='<c:url value="/produtos"/>'