[RESOLVIDO] Duvida vRaptor2 - mensagem de cadastrado com sucesso etc

Pessoal

Estou trabalhando em um sistema e utilizando o vRaptor 2

O sistema consiste em uma série de cadastros, que irão popular uma base de dados que depois terá outras finalidades.

Mostro uma listagem, com um botao adicionar. Até ai OK. Clicando no botão, abre o formulário, e adiciona perfeito, voltando pra listagem.

No view.properties:

administracao.salvarPerfil.ok = redirect:administracao.listaPerfil.logic

Ai veio a idéia de quando mostrar a listagem, aparecer uma mensagem indicando que aquela entidade foi registrada com sucesso (nada de sensacional, mas ai que ta o problema rs).

No AdministracaoLogic criei uma variavel (e respectivos getters&setters)


	@In(scope=ScopeType.FLASH, required=false)
	@Out(scope=ScopeType.FLASH)
	private String mensagem;

public void salvarPerfil(Perfil perfil){		
	daoFactory.beginTransaction();
	daoFactory.getPerfilDAO().adiciona(perfil);
	daoFactory.commit();
	this.setMensagem("Perfil "+perfil.getNome()+" cadastrado com sucesso.");
}
	

Legal… volta pra listagem pelo redirecionamento do view.properties e mostra a mensagem.

Se eu clicar no menu listar, deve aparecer a listagem sem a mensagem, mas ai que ta o problema, a mensagem fica aparecendo sempre, até eu subsituir por outra.

Em outro logic tenho a mesma variável, para mostrar a mensagem de cadastro de outro tipo de entidade. Se no menu clico para listar os usuários por exemplo, aparece a listagem com essa mensagem já.

Tentei de tudo.

Uma opção que achei que funcionaria é a seguinte: todos meus logics são interceptados por um AutorizadorInterceptor.

No AutorizadorInterceptor, criei a mesma variável com scopeType=FLASH, e após o flow.execute(), faço:

this.setMensagem("");

Mas na próxima tela continua aparecendo a mensagem.

Alguém consegue me ajudar a resolver esse problema ou me dar dicas de outra forma de apresentar essa mensagem?

Desde já agradeço a ajuda de todos.

Abraços

Não é impossível que ninguém nunca tenha usado esse tipo de mensagem?

Desculpa ficar acelerando, mas perdi ja dois dias nisso ai.

Valew

Aquele @In na mensagem está fazendo com que toda hora ele re-injete a mensagem com o mesmo valor que ele tinha acabado de ser “outjetado”.

Vc precisa mesmo daquele @In na mensagem?

[]'s

Se eu não tiver o In ele não pega do escopo, não é?

E mesmo que esteja “outjetando”, o meu interceptor, que roda depois do flow.execute não deveria “outjetar” o valor vazio?

Abs

Tentei o que falou de tirar o In, mas não funciona… ele deixa de pegar o valor da mensagem q foi “outjectado” no método anterior.

Deixa eu tentar resumir…

Posso jogar essa variável na sessão. Mas preciso que após cada requisição atendida, essa variável seja limpa.

To tentando limpar ela no Interceptor, depois do flow.execute(), mas não consigo.

deixa a mensagem no escopo de requisição nas duas lógicas, daí no views.properties vc faz:

administracao.salvarPerfil.ok = redirect:administracao.listaPerfil.logic?mensagem=${mensagem}

vê se funciona

vou fazer o teste e ja digo o resultado

vlw

[quote=lucascs]deixa a mensagem no escopo de requisição nas duas lógicas, daí no views.properties vc faz:

administracao.salvarPerfil.ok = redirect:administracao.listaPerfil.logic?mensagem=${mensagem}

vê se funciona[/quote]

Nem conseguiu receber a mensagem pra mostrar na tela depois de salvar brother

Acho que ai no meu logic eu teria de pegar a mensagem como parametro da logica chamada neh… soh de estar no escopo nao carrega certo?

faça uma coisa mais:

tira o escopo do @In

faça:
@Out(scope=FLASH)
@In
String mensagem, e vê no que dá

Bom

A solução que encontrei não sei se é a melhor e mais indicada, mas parece ter resolvido o problema.

Simplesmente tirei todos os ScopeTypes. Deixei apenas a declaração da variável.

No view.properties deixei assim:

administracao.salvarPerfil.ok = redirect:administracao.listaPerfil.logic?mensagem=${mensagem} 

E no jsp usei ${param.mensagem}

lucascs, obrigado pela ajuda.

Abraços