Eu gostaria de saber com eu recebo uma lista enviada pelo vraptor no jsp, contanto que eu consiga pegá-la novamente em outro métido do jsp;
@Get("/usuarioStart")
public void usuarioStart() {
lista = dao.getLista();
result.include("minhalista", lista);
}
// ate aqui ok;
depois eu quero pegar em outro métido
@Get("/usuarioTeste")
public void usuarioTeste(List<Usuario> novalista) {
.....
}
como eu tenho que colocar no jsp, para que essa lista volte ?
Para vc usar a lista no JSP vc usa uma EL e JSTL.
Não sei se tem como mandar a lista novamente… mas acho q pode sim.
O Lucas(pai do VRaptor) pode te ajudar melhor nisso.
Para mostrar eu uso jstl
<c:forEach var=“aaa” items="${minhalista}">
${aaa.id} |
${aaa.nome} |
${aaa.email} |
até aí tudo bem, mas o que tenho que fazer no jsp pra que essa lista possa ser usada em outro método ?
mas pq vc qr devolver pra um outro método se vc jáh a tem no servidor?
Então, devo estar fazendo algo errado. o Primeiro código que fiz, abaixo, quando dava o redirect, quando entrava no usuarioCadastro, a lista já estava nula. Debugando, percebi que ele sempre entra no UsuarioController e ali a lista já não tem nada.
@Resource
public class UsuarioController {
private Result result;
private UsuarioDao dao = new UsuarioDao();
private List<Usuario> lista;
public UsuarioController( Result result, List<Usuario> lista ) {
this.result = result;
this.lista = lista;
}
@Get("/usuarioStart")
public void usuarioStart() throws SQLException {
lista = dao.getLista();
result.redirectTo(UsuarioController.class).usuarioCadastro( );
}
@Get("/usuarioCadastro")
public void usuarioCadastro() {
result.include("minhalista", lista);
}
@Get("/usuarioTeste")
public void usuarioTeste() {
result.redirectTo(UsuarioController.class).usuarioCadastro( );
}
}
Alguém sabe onde está o erro ?
Desculpa a demora Imonqueiro, mas só vi agora
coloca seu construtor assim
public UsuarioController(Result result, UsuarioDAO dao) {
this.result = result;
this.lista = new ArrayList<>();
this.dao = dao;
}
não esqueça de anotar a class UsuarioDAO como @Componet, para que o vraptor injete o dao pra vc…
Aproveitando o tópico
como eu posso recuperar na jsp os valores de um atributo que é uma coleção de outra classe:
Exemplo:
public class Pessoa() {
private int id;
private String nome;
....
private Collection<Telefone> telefones;
public Collection<Telefone> getTelefone() {
return telefones;
}
...
}
public class Telefone {
@EmbeddedId
private final TelefonePk pk;
public TelefonePk getPk() {
return pk;
}
...
}
public class TelefonePk implements Serializable {
private String numero;
private String ddd;
public TelefonePk() {
super();
}
....
}
Eu achei que fosse algo parecido com
<c:forEach items="${pessoaList}" var="pessoa">
<tr>
<td>${pessoa.nome }</td>
<td>${pessoa.cpf }</td>
<td>${pessoa.telefone.pk.numero }</td>
...
</c:forEach>
alguém poderia me ajudar???
trodrigo, faça outro c:forEach com pessoa.telefone, ou se tiver um número fixo de telefones, pode usar pessoa.telefone[0], pessoa.telefone[1]…
Apenas demonstrando o que o Bruno disse, ficaria assim:
<c:forEach items="${pessoaList}" var="pessoa">
<tr>
<td>${pessoa.nome}</td>
<td>${pessoa.cpf}</td>
<c:forEach items="${pessoa.telefones}" var="telefone">
<td>${telefone.numero }</td>
</c:forEach>
</tr>
</c:forEach>
Valeu pela resposta rapida…Só outra coisa…como deveria ser meu get e set?
eu tinha feito desta maneira
public void setTelefones(HashSet<Telefone> hashSet){
this.telefones = hashSet;
}
public Collection<Telefone> getTelefone(){
return (List<Telefone>) telefones;
}
mas gera uma exceptin “Property ‘telefones’ not readable on type java.util.HashSet”
Eu faria dessa maneira
public Collection<Telefone> getTelefones() {
if (telefones == null) {
telefones = new HashSet<>();
}
return telefones;
}
public void setTelefoness(Collection<Telefone> telefones) {
this.telefones = new HashSet<>(telefones);
}
Valeu galera, mas vou mudar o mapeamento da Classe Telefone, usar chave composta no Hiberbate já vi que um muito ruim…
Só pra avisar…eu consegui resolver!
O que vocês me passaram funcionou perfeitamente…mais uma vez obrigado!