VRaptor 3 + HibernateCustomProvider - Propagação imediata

5 respostas
R

Pessoal como eu faço para propagar um objeto imediatamente ex:

public void save(Cliente cliente) {
    ...
    dao.save(cliente);
    result.include("cliente", cliente);
    result.forwardTo("/WEB-INF/jsp/cliente/visualizacao.jsp"); // <-- o objeto cliente não chega atualizado, poque o HibernateCustomProvider faz commit depois !?!?

}
Se eu usar o redirectTo funciona, mas ficaria mais otimizado com o forwardTo pois o submit do formulario é via ajax...

5 Respostas

Lucas_Cavalcanti

não faça forward para jsp direto se vc tiver uma lógica pra ela…
no seu caso por exemplo seria:

result.forwardTo(this).visualizacao();
//ou
result.forwardTo(ClienteController.class).visualizacao();

o commit só acontece no final da requisição mesmo… e o forward tah na mesma requisição…
tenta fazer um session.flush() no seu dao.save();

[]'s

R

Lucas, obrigado pela resposta…

Mesmo com o flush parece não ter diferença…

Lucas_Cavalcanti

o que vc quer dizer com não vem atualizado? não vem com o id?

R

Olá Lucas, vem com o id só não vem com os relacionamentos preechidos…

Lucas_Cavalcanti

hum… não sei se isso funciona, mesmo que vc tivesse comitado a transação…

vc tem o método visualização, certo?

vou supor que ele é assim:

public void visualizacao(Long id) {
      Cliente cliente = dao.findById(id);
      result.include("cliente", cliente);
}

então seu método save pode ser:

public void save(Cliente cliente) {  
    ...  
    dao.save(cliente);
    result.forwardTo(this).visualizacao(cliente.getId());
}

creio que assim funcione do jeito q vc quer

Criado 15 de dezembro de 2010
Ultima resposta 15 de dez. de 2010
Respostas 5
Participantes 2