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

HTTP Status 400 – Bad Request

Já fiz essa parte do curso e tinha dado tudo certo. Estou fazendo uma revisão aqui, e esse erro apareceu. Eu entro na página do form e quando clico com os campos vazios isso aparece. Revisei bastante pra não ficar postando coisa inutil no forum, mas não deu. Deve ser mais um daqueles erros do nada tipo 404 no apache e tem que reinstalar o servidor sabe-se lá porque, ou ter que dar maven clean, maven install ou maven update. Acontece que pretendo ir a fundo nesse erro saber a causa para não acontecer em uma aplicação grande, dai que ferra com tudo mesmo. Quem puder ajudar agradeço.

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/8.5.34
2 respostas

Esqueci, está falando que é no cliente. Disable cache habilitado, ctrl+f5, mudei o navegador, deu na mesma. Conferi o html está ok.

Dai eu li que 400 é sintaxe inválida. Aparentemente tudo correto abaixo:

ProdutoValidation

    @Override
    public void validate(Object target, Errors errors) {
        ValidationUtils.rejectIfEmpty(errors, "titulo", "field.required.produto.titulo");
        ValidationUtils.rejectIfEmpty(errors, "descricao", "field.required.produto.descricao");

        Produto produto = (Produto) target;
        if(produto.getPaginas() <= 0) {
            errors.rejectValue("paginas", "field.required.produto.paginas");
        }        
    }

messages.properties dentro de WEB-INF

field.required = Campo obrigatório
field.required.produto.titulo = O título é obrigatório
field.required.produto.paginas = Informe o número de páginas
field.required.produto.descricao = A descrição é obrigatória
typeMismatch = O tipo de dado é inválido
typeMismatch.produto.paginas = Digite um valor válido. Exemplo: "100"

Dai eu li algo de antivirus, acho q é só pra vender anti-virus (provavelmente, porque está funcionando na outra aplicação que eu já fiz)

Faço a mínima ideia.

solução!

Descobri gente, não sei se estou errado ou é erro no curso.

Bom resolvi consultar um forum decente e digitei erro 400 alura no google kkk, dai apareceu isso: https://cursos.alura.com.br/forum/topico-erro-400-apos-enviar-form-33615 Dai saquei que era nos atributos, o BindingResult estava faltando no meu, conforme abaixo:

 @RequestMapping(method=RequestMethod.POST)
    public ModelAndView gravar(@Valid Produto produto, BindingResult result, RedirectAttributes redirectAttributes) {

        if(result.hasErrors()) {
            return form(produto);
        }
        produtoDao.gravar(produto);
        redirectAttributes.addFlashAttribute("sucesso", "Produto cadastrado com sucesso!");
        return new ModelAndView("redirect:produtos");
    }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software