Estou com a seguinte duvida o vraptor-3 nao tem o mesmo comportamento que vraptor-2 em parte de receber dados do cliente
exemplo VRaptor-2
@ComponentpublicclassTestController{@OutprivateCadRamocadramo;publicvoidsalvar(){// TODO Auto-generated method stubSystem.out.println("cadramo:"+cadramo.getDescricao());formulario(cadramo);}publicCadRamogetCadramo(){returncadramo;}publicvoidsetCadramo(CadRamocadramo){this.cadramo=cadramo;}}
Aqui o cadramo vai ser populado
exemplo VRaptor-3
@ResourcepublicclassTestController{privateCadRamocadramo;@Postpublicvoidsalvar(){// TODO Auto-generated method stubSystem.out.println("cadramo:"+cadramo.getDescricao());formulario(cadramo);}publicCadRamogetCadramo(){returncadramo;}publicvoidsetCadramo(CadRamocadramo){this.cadramo=cadramo;}}
Aqui ja o cadramo não vai ser populado.
Teria como VRaptor-3 ter o mesmo comportamento que VRaptor-2 nesta parte.
No Vraptor 3 você não precisa ter getters nem setters. Tudo é feito via injeção no construtor.
Outra diferença que no Vraptor 2 você precisa anotar uma propriedade como @Out para que ela esteja disponivel na sua tela. Já no Vraptor 3 você pode usar o result.include.
J
jvds
garcia-jj:
No Vraptor 3 você não precisa ter getters nem setters. Tudo é feito via injeção no construtor.
Outra diferença que no Vraptor 2 você precisa anotar uma propriedade como @Out para que ela esteja disponivel na sua tela. Já no Vraptor 3 você pode usar o result.include.
Ok ate ai eu sei so nao estou tendo uma idea de como nao precisar declarar em cada metodo um parametro e sim declarar este objeto deixando ele publico para todos estes meus metodos .
Não sei se fui muito claro.
Obrigado !!!
JVDS
G
garcia-jj
Minha opinião: faça os objetos estarem sempre no nível mais baixo de onde você precisa. Ou seja, declare sempre o objeto no método, e se outro método precisar passe-o como parametro. Penso que assim fica mais simples de organizar e visualizar os métodos, além de que fica mais simples reaproveitar os métodos.
Minha opinião: faça os objetos estarem sempre no nível mais baixo de onde você precisa. Ou seja, declare sempre o objeto no método, e se outro método precisar passe-o como parametro. Penso que assim fica mais simples de organizar e visualizar os métodos, além de que fica mais simples reaproveitar os métodos.
No 2 caso que voce me mostrou e que eu quero fazer sim mas se eu executar primeiro metodos /meu/foo ele vai guardar o valor do objeto, mas se executar depois /meu/bar ele vai perder o valor vou receber null exception.
G
garcia-jj
Só vai perder se forem requisições diferentes. Como o ciclo de vida dos objetos são request, obviamente você vai perder os dados da requisição anterior.
O que você está pensando em fazer é algo como o Conversation do JBoss Seam? Caso sim, o mais proximo disso no Vraptor é usar o teu controller como @SessionScoped.
Lucas_Cavalcanti
se o controller for @SessionScoped vc não pode usar Result nele…
o ideal é ter outra classe que seja @SessionScoped e usá-la pra isso…
vc precisa disso pra conversation mesmo? ou é só pra economizar código?
assim esse CadRamoSteps seria tipo um builder de CadRamo
E eu tinha pensado nisso mas e que isso nao e muito elegante estou certo disso ?
Lucas_Cavalcanti
se a classe for só o getter e setter não é elegante mesmo…
mas se vc fizer como eu te falei e colocar métodos mais representativos fica bastante elegante
pensa por enqto q esse CadRamoSteps vai ter um método pra cada lógica do controller e no final ela retorna o cadRamo preenchido totalmente, pronto pra salvar