Vraptor 3 Mensagem na View

5 respostas
H

Olá companheiros do guj.

O problema é o seguinte:

Tenho um controller UsuariosController com duas actions:

public void excluir(Usuario usuario){
        dao.excluir(dao.get(usuario));
        // Aqui eu quero adicionar a mensagem "Usuário excluido com sucesso!" para visualizar no index, mas eu perco a mensagem quando redireciona...
        result.include("mensagem", "Usuário excluido com sucesso!");
        result.use(Results.logic()).redirectTo(UsuariosController.class).index();
    }

public List<Usuario> index(){
        return dao.getUsuarios(new Usuario());
    }

Quando vou redirecionar pro index, o result perde a mensagem…

Como fazer para exibir a mensagem na view dizendo que excluiu o usuário com sucesso?

no ruby on rails eu tenho um recurso flash[“mensagem”] = “Usuário excluido com sucesso!” para adicionar uma informação na view.

Existe algum recurso assim no vraptor ou no java pra fazer isso?

5 Respostas

Filipe_Chagas

Você pode ter um atributo no seu controller.
Uma string mensagem, por exemplo. Depois basta acessá-la na view.
Outra opção seria ter um atributo Collection de mensagens (Strings), copiando um pouco o recurso flash do rails (claro, sem a mesma flexibilidade).

Lucas_Cavalcanti

Isso não tá implementado ainda… dá uma olhada no tópico:
http://www.guj.com.br/posts/list/141021.java

atributos no controller não vai funcionar… a menos que ele seja de um escopo maior, tipo Session, mas vai
ficar bem difícil de controlar…

H

Eu resolvi fazendo o seguinte:

No controlador eu adiciono um atributo flash na sessao ( a mensagem que eu quero displayar )

e no final do template ( estou usando tiles ) eu limpo o flash da sessao.

Funcionou bem.

Filipe_Chagas

Cara… eu sou mau…
Andei fuçando na documentação do vraptor que está no github…

Olha só o que encontrei: (http://github.com/caelum/vraptor/blob/master/vraptor-site/src/guide/pt/08-views-and-ajax.afc)

Se você adicionar objetos no Result e fizer um Redirect, esses objetos estarão disponíveis na
próxima requisição.

public void adiciona(Cliente cliente) { dao.adiciona(cliente); result.include("mensagem", "Cliente adicionado com sucesso"); result.use(logic()).redirectTo(ClientesController.class).lista(); }

lista.jsp:

... &lt;div id="mensagem"&gt; &lt;h3&gt;${mensagem}&lt;/h3&gt; &lt;/div&gt;

Eu sei que, se não está no site, é porque não é verdadeiro (pelo menos ainda).

Minha pergunta é:
Isso passará a funcionar numa próxima versão? Ou será de outra forma (escopo FLASH talvez?)

Lucas_Cavalcanti

Olá Filipe…

Isso já está implementado, mas não está lançado ainda.

só funciona na versão snapshot do repostório. Vamos lançar uma nova versão logo, com
essa e mais algumas coisas…

dá uma olhada no changelog: http://vraptor.caelum.com.br/documentacao/changelog/
o que está marcado pra 3.0.1 está implementado, mas não foi lançado ainda

[]'s

Criado 12 de outubro de 2009
Ultima resposta 19 de out. de 2009
Respostas 5
Participantes 3