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

redirectattributes.addflashattribute

Não estou conseguindo colocar a msg do controller para o jsp utilizando o addflashattribute.

Seguindo a vídeo aula - Redirect com Escopo de Flash versão do spring mvc 4.1.0

#Controller
    @RequestMapping(method=RequestMethod.POST)
    public ModelAndView gravar(Produto produto, RedirectAttributes redirectAttributes){
        System.out.println(produto);
        produtoDao.gravar(produto);
        redirectAttributes.addFlashAttribute("sucesso","Produto cadastrado com sucesso!");
        return new ModelAndView("redirect: produtos");

    }
#JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Livros de Java, Android, iPhone, Ruby, PHP e muito mais - Casa do Código</title>
</head>
<body>
    <h1>Lista de Produtos</h1>
    <p>
        ${sucesso}
    </p>
    <table>
        <tr>
            <td>Título<td>        
            <td>Descrição<td>        
            <td>Páginas<td>        
        </tr>
        <c:forEach items="${produtos}" var="produto">
            <tr> 
                <td>${produto.titulo }<td>        
                <td>${produto.descricao }<td>        
                <td>${produto.paginas }<td>    
            </tr>
        </c:forEach>
    </table>
</body>
</html>
12 respostas

Vou te dizer que não vi nada de errado.. a página aparece sem a mensagem, é isso?

Sim! Estou quebrando a cabeça.

esse código está no github? posso dar uma olhada

ainda não coloquei no github, aqui no trabalho o acesso ao git é bloqueado. Vou compactar é subir para o google driver

Importei seu projeto, subi no tomcat e rodei. Tudo funcionou como deveria...

Pode ser alguma coisa de configuração, você pode me passar as sua configurações para eu comparar com as minhas? java version "1.8.0_101" apache-tomcat-8.5.5 spring-webmvc-4.1.0

Fiz a importação em outra máquina e também não funcionou.

importei o seu projeto, então as versões do spring são iguais. Usei um tomcat 7 e depois o 8. Minha versão do java é a 1.8.0_40.

Não achei solução, já instalei o apache 7, 8 e 8.5 e nada. No modo debug o objeto redirectAttributes receber o valor correto. Não sei pq a msg não vai o jsp.

Reginaldo, esse é um caso problemático mesmo. Pq o seu código está correto.. Depois que vc cadastra realmente está voltando para a tela da listagem né? Se vc adicionar outras mensagens, aparece?

Cara, já tentei colocar mensagem até na action de listar produtos e também não aparece nada.

solução!

Conseguir solucionar o problema. Alterei as dependências do Spring-webmvc e do tomcat-servlet-api para as versões mais novas e funcionou como o esperado.

Dependência do curso

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>7.0.30</version>
        <scope>provided</scope>
    </dependency>

Dependência Nova

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>8.0.37</version>
        <scope>provided</scope>
    </dependency>