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?
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).
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…
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.
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)
[quote]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:
...
<div id="mensagem">
<h3>${mensagem}</h3>
</div>
[/quote]
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?)
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