Recebendo um ArrayList no construtor de um metodo com Vraptor

9 respostas
janjan

Bom dia pessoal, bem como o titulo diz
tem como eu Receber a uma lista qualquer em um método que acesso da minha página.
pergunto por que só tenho duvida quanto a isso, quero implementar algo do tipo carrinho de compras
e guargando os itens…

ou talvez seria melhor criar um bean de sessão pra isso e salvar lá dentro?
se sim, passar ele direto para o método ou preciso passar para o construtor e pegar ele no método depois!!
como acham mais bonito, e facil de dar manutanção depois?

fico no aguardo.
abraços!

9 Respostas

renanreismartins

um carrinho é algo que o usuário tem durante toda sua sessção entao é legal colocar na session sim.

quanto a receber uma lista sim vc pode ter algo assim no seu controller:

public void adicionaItens(List<Item> items) ...

e seu jsp:

// for....
<input type="checkbox" name="carrinho.itens[${i.count}].id" value="${item.id}" />

abrasssss

janjan

Poisé, é algo similar a um carrinho, vamos supor, uma tela de cadastro de nota e vou adicionando os itens…
não queria ter que por na sessao, pois vai que o cara sai da tela de cadastro e fica tudo na sessão…

Mas como posso passar a lista por parametro, entao vou fazer assim.
tinha pensado em fazer com ajax essa de adicionar os itens da nota, mas levo uma surra sempre de ajax,
até faço, mas demoro muito,
então vou fazer assim no request mesmo…
valeu pela dica!! abraços!

renanreismartins

vc pode fazer por ajax nao influencia em nada, eh soh enviar apenas um item

abrassss

janjan

Tchê
problemas
montei meu jsp assim

&lt;input type="hidden" name="nota.itens[0].produto.cod" value="0" /&gt;

e o metodo que chamo no action esta assim

public void adiciona(List&lt;Item&gt; itens, Produto produto){

detalhe, até eu começar a testar a lista o bean de produto estava 100%, vindo normal.
mas quando fui usar a lista ela vem nula sempre, o bean vem como preciso
mas a lista de itens me quebra…
tentei não usar na sessao,
estou usando tudo com submit, mando tudo e recebo tudo sempre
vou melhorar isso mais pra frente…
mas a ideia agora é fazer bombar, e melhorar mais tarde…

alguém ajuda!!!

janjan

e desse jeito deu essa exception no vraptor

br.com.caelum.vraptor.InterceptionException: There are validation errors and you forgot to specify where to go. Please add in your method something like:
validator.onErrorUse(page()).of(AnyController.class).anyMethod();
or any view that you like.
If you didn't add any validation error, it is possible that a conversion error had happened.
Lucas_Cavalcanti

se a lista se chama “itens” no controller, vc tem que usar esse nome nos inputs:

<input type="hidden" name="itens[0].produto.cod" value="0" />

o erro que aconteceu é pq deu algum erro de conversão provavelmente(está na msg)

janjan

estou com meu metodo assim

@Post("ativoCliente/adicionaItemAtivo")
	public void adicionaItemAtivo(AtivoCliente ativoCliente,List<AtivoCliente> listaAtivos){

e no jsp assim

<input type="hidden" name="listaAtivos[0].ativo.codAtivoCliente" value="0" />

e nao funciona, acontece o mesmo stacktrace que coloquei ai em cima!

Lucas_Cavalcanti

coloca como primeira linha do método:

validator.onErrorForwardTo(this).formulario();

ou coisa do tipo, e imprima a variavel ${errors} no jsp

janjan

consegui passar os valores da lista por parametros, mas a lista com mais de 1 item tava dando erro na conversão de uma data…
mas se eu tentava de novo ele listava e adicionava corretamente,
mas dai era 1 erro e 1 acerto…
fiquei me encomodando com isso e coloquei na sessao o bean, resolvi o problema temporariamente!!
quando tiver um tempo pra melhorar, mudo isso e faço com ajax!
valeu a dica ai Lucas!

Criado 25 de janeiro de 2012
Ultima resposta 27 de jan. de 2012
Respostas 9
Participantes 3