[RESOLVIDO]vRaptor + lista passada pela URL

6 respostas
sonictk

Primeiramente estou ciente que já existe algo no forum, porem …

O que realmente queria seria um forma de passar a lista para o controller da seguinte forma:

na Jsp

<a /aluno/imprimir/${listaAlunos}"/>"&gt;

Onde essa ${listaAlunos} já uma lista que está preenchida.

No Controller

@Path("/imprimir/{listaAlunos}")
public void imprimir(List&lt;Aluno&gt; listaAlunos) throws Exception {
   ...
}

6 Respostas

Lucas_Cavalcanti

como é uma lista, o ideal seria passar via query string mesmo, mas só os ids dos alunos…

algo assim:

<a href="/blah/blah?alunos[0].id=2&alunos[1].id=3&alunos[2].id=7">Imprimir</a>

um dos jeitos pra gerar essa queryString:

<c:set var="query" ><c:forEach items="${alunoList }" var="aluno" varStatus="s"
>alunos[${s.index}].id=${aluno.id}&</c:forEach></c:set>
<a href="/blah/blah?${query}">Imprimir</a>

a quebra de linha estranha é de propósito, está assim pra ficar tudo numa linha só.

sonictk

Ae no controller fica normal ?

@Path("/imprimir/{listaAlunos}") public void imprimir(List&lt;Aluno&gt; listaAlunos) throws Exception { ... }

e tipo, não tem como fazer um Converter que faça isso?
Pq acho que o codigo fica mais limpo, sei la.

Lucas_Cavalcanti

no controller ficaria sem o parametro na url:

@Path("/imprimir")  
public void imprimir(List<Aluno> alunos) throws Exception {  
   ...  
}

quando vc faz um ${listaAlunos} na jsp ele vai usar o toString da lista. Vai ficar algo como [br.com.suaempresa…Aluno@22abc232, br.com.suaempresa…Aluno@232fdsd], não é algo mto legal de deixar na url :wink:

e mesmo que vc sobrescreva o toString pra retornar algo como o id do aluno, vai ficar a url /blah/aluno/imprimir/[1,2,3,4], que não é uma url válida.

sonictk

Lucas Cavalcanti:


quando vc faz um ${listaAlunos} na jsp ele vai usar o toString da lista. Vai ficar algo como [br.com.suaempresa…Aluno@22abc232, br.com.suaempresa…Aluno@232fdsd], não é algo mto legal de deixar na url :wink:

e mesmo que vc sobrescreva o toString pra retornar algo como o id do aluno, vai ficar a url /blah/aluno/imprimir/[1,2,3,4], que não é uma url válida.

Isso eu tinha percebido já!

Mas e quanto ao “Converter” , nem sei se é realmente usado para esses casos, não da pra fazer?
Se bem que acho que não se aplica à listas
Conversores vRaptor

Lucas_Cavalcanti

é, não vai funcionar pra listas.

o jeito certo é fazendo por query string mesmo, do jeito que eu te passei. Se essa lista de alunos é relacionada com outra coisa, (tipo uma Turma, por exemplo), vc pode passar o id da turma e buscar os alunos no servidor.

agora passar todos os dados dos alunos na url não vai rolar. Passe os ids, via query string.

sonictk

O lance da lista era só pra simplificar mesmo.

Mas a sua solução funcionou perfeitamente, já tinha visto algo parecido em outros posts aqui no forum, mas queria fazer do jeito diferente!
Mas assim funciona 100%

Ficou muito bom!
Obrigado novamente!

[color=green]RESOLVIDO[/color]

Criado 21 de junho de 2012
Ultima resposta 22 de jun. de 2012
Respostas 6
Participantes 2