Galera estou iniciando no Vraptor, e desculpe se for ignorancia, mas tenho uma dúvida na questão da view, vou exemplificar…
Eu tenho um Controller chamado loja:
@Resource
public class LojaController {
private final DaoFactory controller;
private Result result;
public LojaController(DaoFactory controller, Result result) {
this.controller = controller;
this.result = result;
}
public Collection<Cd> list(){
return this.controller.getCdDao().listAll();
}
public void inicio(){
}
}
Quando eu chamo a view por …/loja/inicio a Lista de Cds não deveria ficar disponível para o Jsp? Porem o For each n mostra nada…
Lucas, como eu ando desatento há alguns dias, viu só? Eu juro que não ví o cdList, hehehe.
Leonardo, uma coisa que você pode fazer para testar se vem ou não registros é alterar seu código para trazer os cds em hard-coded, assim você consegue indentificar se há mesmo erro ou sua lista está vindo vazia da DAO.
Altere disso
Para isso
[code]Cd cd0 = new Cd();
cd0.setTitulo(“Meu primeiro CD”);
Cd cd1 = new Cd();
cd1.setTitulo(“Meu segundo CD”);
[code]public Collection list(){
//return this.controller.getCdDao().listAll();
Cd cd0 = new Cd();
cd0.setTitulo(“Meu Primeiro Cd”);
Cd cd1 = new Cd();
cd1.setTitulo(“Meu SEgundo Cd”);
return Arrays.asList(cd0,cd1);
}
public void inicio(){
result.include("cdList",list());
}
[/code]
Chamei o método list como parametro do include… e assim funciona, mas acredito não ser o jeito correto né? E eu n faço a minima ideia de onde está o erro.
Intendi que não faz a diferença, mas eu pus o include dentro do método inicia. é correto isso? Ao que me pareceu lendo a documentação é que fazendo um método com retorno, qd a view fosse inicializada o objeto ficaria disponivel pra ela, eu estou usando essa gambiarra q fiz.
de Collection pra List… não funfou… na hora de chamar o cdList na view não retorna nada.
Ainda n consegui debugar legal no Netbeans pra ver com qual nome ele tah sendo passado, ou não… Hoje a tarde vou sentar pr dar uma analizada…
Agradeço a todo o pessoal do Vraptor pela atenção.
E parabens, temos um ótimo framework!
Leonardo, mantenha-nos informado de como andam as coisas. Mesmo alterando para list usa aquele hard-coded que te passei, assim você consegue ver se o erro é no JSP ou é da DAO.
Eu tbm estou comecando, mas pelo que entendi do framework pra acessar a lista de cds voce teria que acessar a url …/loja/list. Por isso que qdo vc inclui o parametro chamando o metodo list() do metodo inicio() funciona.
Fala galera, Desculpa a demora em responder e/ou dar notícias fim de período na facul foi tenso.
[quote]
Eu tbm estou comecando, mas pelo que entendi do framework pra acessar a lista de cds voce teria que acessar a url …/loja/list. Por isso que qdo vc inclui o parametro chamando o metodo list() do metodo inicio() funciona. [/quote]
Pois é, essa é minha dúvida, tem como eu acessar essa List sem acessar a url /list…
Ao acessar a url ‘/loja/inicio’ ele vai executar o método inicio() e fazer o redirecionamento pra inicio.jsp… Implicitamente ele executa o método list, disponibilizando a lista para a view? Ou é como o amigo citou?
A forma correta é como o YvGa falou… juro que nem notei que poderia ser esse o erro. Creio que o correto do seu código é isso abaixo. Se você chamar /meu-contexto/loja/list irá chamar a lista.
[code]@Resource
public class LojaController {
private final DaoFactory controller;
private Result result;
public LojaController(DaoFactory controller, Result result) {
this.controller = controller;
this.result = result;
}
public Collection<Cd> list(){
return this.controller.getCdDao().listAll();
}