2
respostas

java.lang.IllegalStateException: Argument [RedirectAttributes] is of type Model or Map but is not assignable from the actual model. You may need to switch newer MVC infrastructure classes to use this argument.

oioi, alguém passou por isso? ao tentar usar o redirectAttributes.

java.lang.IllegalStateException: Argument [RedirectAttributes] is of type Model or Map but is not assignable from the actual model. You may need to switch newer MVC infrastructure classes to use this argument.
2 respostas

Oi Aline, nunca vi :(. De todo jeito, posta o código da classe e indica em qual método isso está acontecendo? Pode ser que tenhamos alguma ideia.

package br.com.casadocodigo.loja.controllers;

import java.util.List;

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.casadocodigo.loja.daos.ProdutoDao;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;

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

    @Autowired //injetado para o Spring //pedimos para o Spring uma instância do objeto que foi anotado
    private ProdutoDao produtoDao;

    @RequestMapping("/form")
    public ModelAndView form() {
        ModelAndView modelAndView = new ModelAndView("produtos/form");
        modelAndView.addObject("tipos", TipoPreco.values());//tipos será a EL no form
        return modelAndView;
    }

    @RequestMapping(method=RequestMethod.POST)//recebe o get e post do form action=/casadocodigo/produtos
    public ModelAndView gravar(Produto produto, RedirectAttributes redirectAttributes) {
        System.out.println(produto);
        produtoDao.gravar(produto);
        //return listar();//sempre depois do post temos q fazer o redirect para nao cair no bug do F5

         //nos redirects perdemos o objeto modelAndView pois sao feitos dois requests, nesse caso a soulcao é usar o flash
         //modelAndView.addObject("sucesso", "Prod cadastrado com sucesso.");

         redirectAttributes.addFlashAttribute("sucesso", "Prod cadastrado com sucesso");
         ModelAndView modelAndView = new ModelAndView("redirect:produtos");
         return modelAndView;

    }

    @RequestMapping(method=RequestMethod.GET)//http://localhost:8080/casadocodigo/produtos/
    public ModelAndView listar() {
        List<Produto> produtos = produtoDao.listar();
        ModelAndView modelAndView = new ModelAndView("produtos/lista");
        modelAndView.addObject("produtos", produtos);

        return modelAndView;
    }
}

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