3
respostas

IllegalStateException: Neither BindingResult nor plain target object for bean name 'produto' available as request attribute

Boa noite Senhores

Estou com problema ao efetuar o binding da minha do meu objeto produto:

IllegalStateException: Neither BindingResult nor plain target object for bean name 'produto' available as request attribute

Penso que pode ser algo no metodo grava:

@RequestMapping(method = RequestMethod.POST)
    public ModelAndView gravaProduto(MultipartFile sumario,@Valid Produto produto,BindingResult result, RedirectAttributes redirect){

        if(result.hasErrors()) return form();


        System.out.println(sumario.getOriginalFilename());

        redirect.addFlashAttribute("mensagem","Produto cadastrado com sucesso");

        String sumarioPath = fileSaver.write("arquivos-sumario", sumario);

        produto.setSumarioPath(sumarioPath);

        produtoDao.gravaProduto(produto);

//    Utilizando redirect evitamos que o dado do formulario seja enviado novamente

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

Pois adicionando o MultipartFile pensei que poderia ter impactado no binding do produto, tentei mudar de lugar "ordem dos fatores" mas sem sucesso... não sei porque não estou conseguindo passar os dados, outras paginas funcionam normalmente no projeto.

Fico no aguardo de uma luz !

Obrigado.

3 respostas

Oi Vinicius, tudo bem ?

Cara, não manjo muito de Spring não, mas você não precisa falar o que esse seu método tá ouvindo ?

Algo como :

@RequestMapping(value="teste", method = Post)

Abraços

Salve Matheus beleza? Então como foi passado em cima da classe a anotação abaixo:

@RequestMapping("/produtos") public class ProdutosController {

Pelo o que eu entendi do curso isso fica como um "prefixo" sendo assim não precisamos adicionar o /produtos antes do metodos.

Mas de qualquer forma vou tentar voltar e adicionar e te falo se deu certo !

Obrigado.

Sem sucesso realmente, mas acabei colocando o metodo "errado" o grava é quando envio o submit, para montar o form é o metodo abaixo.

@RequestMapping("/cadastraProduto") public ModelAndView form(){

ModelAndView view = new ModelAndView("/produtos/cadastraProduto");

view.addObject("tipos", TipoPreco.values());

return view; }

Quando ele retorna a view com a jsp ai lança a exception:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/produtos/cadastraProduto.jsp at line 25

22:

<form:form action="${s:mvcUrl('PC#gravaProduto').build() }" method="POST" commandName="produto" enctype="multipart/form-data">
23:         <div>
24:             <label>Titulo</label> 
25:             <form:input path ="titulo" />
26:             <form:errors path="titulo" />
27:         </div>
28:         <div>