Vraptor 3 - mensagens de Results entre forwards

8 respostas
A

olá pessoal

vi na documentação do Vraptor 3 como passar mensagens para a view após executar um método da controller.
Minha dúvida é como fazer isto quando uso forwards entre métodos.

Abaixo coloquei um código para exemplificar

classe: PedidosController

@get //via link
public void listar(){

     //monta dados default de busca
     User user = new User("Marcelo");
     TipoPedido tipoPedido = "compra";	

     //repassa estes dados para o método que faz a busca da listagem de pedidos
     this.result.use(Results.logic()).forwardTo(this.class).listar(Usuario usr, TipoPedido tipoPedido);		


}

// na view listar tem a listagem de pedidos e um form de filtro de busca de pedidos
@post //recebe os parametros via httpPost ou via forward
public List<Pedido> listar(Usuario usr, Pedido pedido) {

    List<Pedido> pedidos = pedidoDao.buscarPorUsuarioPedido(usr, pedido);

    return pedidos;				

}

na listar.jsp listo os pedidos.

Nesta tela cada pedido tem um link para abrí-lo num form para alteração.

//após alterar dou um redirect para listar()
public alterar(Pedido pedido){

	pedidoDao.altera(pedido);

	this.result.include("msg_operacao", "Pedido alterado com sucesso.");			

	this.result.use(Results.logic()).forwardTo(this.class).listar();

}
em listar.jsp não consido acessar "msg_operacao".

Alguem pode me ajudar nisto ?!

obrigado,
Abçs

8 Respostas

Lucas_Cavalcanti

se vc está usando a versão mais nova do vraptor, vc pode fazer assim:

public alterar(Pedido pedido){

	pedidoDao.altera(pedido);

	this.result.include("msg_operacao", "Pedido alterado com sucesso.");			

	this.result.forwardTo(this).listar();

}

assim vc deveria conseguir acessar a mensagem via ${msg_operacao} no seu jsp

A

funcionou. obrigado

Estou usando a versão, 3.0.2, do vraptor. Esta não é a última versão ?? quando coloco “.” o Eclipse não acha o método atalho do forward. Porém na documentação 3.0.2. fala deste atalho.

Lucas_Cavalcanti

a versão mais nova é a 3.1.1: http://tinyurl.com/vr3dw

D

Agora me veio uma duvida, quando eu utilizo o result dessa forma:

Só é possível pegar esse valor na view(jsp) ${msg_operacao}?

Ou existe outra forma de pegar o valor dessa chave(msg_operacao), que não seja na view(jsp).

Lucas_Cavalcanti

tem como pegar sim, mas pq vc quereria fazer isso em outro lugar? pode me dar um exemplo? geralmente isso não faz sentido…

D

É realmente eu ainda não precisei, mais já me veio essa dúvida, era mais para saber mesmo. Como eu poderia pegar esse valor?

Lucas_Cavalcanti

o result tem um método do tipo

result.included ou includedValues, não lembro agora e to sem o código do vraptor pra confirmar…

D

Hum, é verdade, é result.included();

Criado 8 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 8
Participantes 3