VRaptor - disponibilizar para a view mais de uma informação

5 respostas
E

Nesta parte da apostila http://www.caelum.com.br/apostila-vraptor-hibernate/vraptor/#7-10-exercicios

No exercício 10, eles falam em disponibilizar mais de uma informação para a view, alguém poderia fazer ou explicar uma implementação disso para mim?

5 Respostas

kadu.m.lino

http://vraptor.caelum.com.br/pt/docs/view-e-ajax/

vc pode incluir uma variavel ou um objeto

result.include("mensagem", "Alguma mensagem");

jsp

<p>${mensagem}
result.include("user", new User());

jsp:

<p>${user.login}</p>
E

Não haveria uma maneira mais simples sem usar esses controller do manual q vc enviou?
PQ no caso eu tava pensando em fazer num caso como este :

package br.com.caelum.goodbuy;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.goodbuy.dao.ProdutoDao;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;
 
 @Resource
 public class Mundo {
   
   public String boasVindas() {
     return "olá mundo!";
   }
   
   public List<String> paises() {
     List<String> result = new ArrayList<String>();
     result.add("Brasil");
     result.add("Portugal");
     result.add("Japão");
     result.add("Canadá");
     result.add("Paraguai");
     return result;
   }
   public int num(){
	     return 5;
	   }
   public Produto produto(){
	ProdutoDao dao = new ProdutoDao();  
	Produto produto = dao.procura(2L);	
	
	   return produto;
	   }
   
 
 }

No caso, eu queria retornar mais informação do q apenas o objeto "produto"

G

eae amigo blz ?

Então pelo vraptor para retornar um objeto vc tem que usar o result mas acredito que ele não seja um empecilho porque você pode usar quantos quiser e é muito simples.

ex:

package br.com.caelum.goodbuy;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.goodbuy.dao.ProdutoDao;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;
 
 @Resource
 public class Mundo {
   
   public String boasVindas() {
     result.include("nomeVariavel", "Olá mundo!");// se voce colocar ${nomeVariavel } no JSP ele vai exibir "Olá mundo!"
     return "olá mundo!";
   }
   
   public List<String> paises() {
     List<String> resultado = new ArrayList<String>();
     resultado.add("Brasil");
     resultado.add("Portugal");
     resultado.add("Japão");
     resultado.add("Canadá");
     resultado.add("Paraguai");
     result.include("resultado", resultado);//no seu jsp ${resultado } é uma list
     return resultado;
   }
   public int num(){
             result.include("numero", 5);//no seu jsp ${numero } exibira 5
	     return 5;
	   }
   public Produto produto(){
	ProdutoDao dao = new ProdutoDao();  
	Produto produto = dao.procura(2L);	
	result.include("produto", produto);//no seu jsp vc podera acessar os atributos de produto usando ${produto.nomeAtributo }
	   return produto;
	   }
   
 
 }
guivirtuoso
package br.com.caelum.goodbuy;  
      
    import java.util.ArrayList;  
    import java.util.List;  
      
    import br.com.caelum.goodbuy.dao.ProdutoDao;  
    import br.com.caelum.goodbuy.modelo.Produto;  
    import br.com.caelum.vraptor.Resource;  

    import br.com.caelum.vraptor.Result;
      
    @Resource  
    public class Mundo {  

       private final Result result;
       private ProdutoDAO produtoDAO;

       public Mundo(Result result, ProdutoDAO produtoDAO) {
           this.result = result;
           this.produtoDAO = produtoDAO;
       }
         
       /**
        *  Este metodo vai retornar p/ jsp a variavel no request ${produto} e ${teste}
        */
       public Produto produto(){  

            result.include("teste", "Outro atributo qualquer que estara disponivel no seu JSP");
         
            // Retorno que já exisita... apenas reescrevi de uma forma diferente
            return produtoDAO.procura(2L);  

           }  
         
      
    }

Abraços

kadu.m.lino
erickdeoliveiraleal:
Não haveria uma maneira mais simples sem usar esses controller do manual q vc enviou? PQ no caso eu tava pensando em fazer num caso como este :
package br.com.caelum.goodbuy;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.goodbuy.dao.ProdutoDao;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;
 
 @Resource
 public class Mundo {
   
   public String boasVindas() {
     return "olá mundo!";
   }
   
   public List<String> paises() {
     List<String> result = new ArrayList<String>();
     result.add("Brasil");
     result.add("Portugal");
     result.add("Japão");
     result.add("Canadá");
     result.add("Paraguai");
     return result;
   }
   public int num(){
	     return 5;
	   }
   public Produto produto(){
	ProdutoDao dao = new ProdutoDao();  
	Produto produto = dao.procura(2L);	
	
	   return produto;
	   }
   
 
 }

No caso, eu queria retornar mais informação do q apenas o objeto "produto"

vc pode dar vários includes!

e pode mandar uma lista pelo "include" tb!

public void paises() {
     List<String> paises = new ArrayList<String>();
     paises.add("Brasil");
     paises.add("Portugal");
     paises.add("Japão");
     paises.add("Canadá");
     paises.add("Paraguai");
     result.include("paises", paises);
     // e tabem pode add outro include
     result.include("teste", "alguns países");
   }

de boa até aih?

vc agora pode pegar essa lista no seu JSP

Criado 20 de fevereiro de 2013
Ultima resposta 21 de fev. de 2013
Respostas 5
Participantes 4