VRaptor3 -Padrão JSP - Controller

4 respostas
yorgan

Bom dia pessoal,
Estou fazendo alguns testes para conhecer melhor o VRaptor e me deparei com uma dúvida.
Não estou conseguindo fazer os dados dos atributos de uma classe serem visualizados na página.

Controller:

package br.com.k2studio.lizard;

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

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.k2studio.lizard.pojo.Usuario;

@Resource
public class UsuarioController {
	
      private List<Usuario> ls;
	    
      @Path("/lista")
      public void lista() {
            List<Usuario> listaUsuario = new ArrayList<Usuario>();
            Usuario u = new Usuario();
            u.setNmUsuario("Usuario");
            listaUsuario.add(u);
            this.ls = listaUsuario;
      }

      public List<Usuario> getLs() {
            return ls;
      }

      public void setLs(List<Usuario> ls) {
            this.ls = ls;
      }
}

JSP:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>VRaptor Blank Project</title>
</head>
<body>
	<c:forEach items="${ls}" var="usuario">
    	     ${usuario.nmUsuario}
	</c:forEach>
</body>
</html>

E estou acessando a URL: http://localhost:8088/vraptor/lista

[]´s

Daniel

4 Respostas

renanreismartins

pelo menos na versao 2 vc tinha que criar um getter para o campo que quer disponivel na view ou anota-lo com @Out

/*
soh agora vi que criou o getter… foi mal
*/

abrasss

Adriano_Almeida

Oi yorgan, blz?

No VRaptor3 vc tem duas formas de disponibilizar os objetos para a view. Uma é retornar o proprio valor no seu método, ou seja:

@Path("/lista")  
   public List&lt;Usuario&gt; lista() {  
         List&lt;Usuario&gt; listaUsuario = new ArrayList&lt;Usuario&gt;();  
         Usuario u = new Usuario();  
         u.setNmUsuario("Usuario");  
         listaUsuario.add(u);  
         return listaUsuario;
    }

Dessa forma, vc tem na view acesso a uma variavel chamada ${usuarioList}.

A outra forma é recebendo um Result na sua classe. O Result é uma classe do próprio VRaptor, e uma das finalidades dela é disponibilizar objetos para a view.

Vc pode fazer o seguinte:

public class UsuarioController {
    public UsuarioController(Result result) {
        this.result = result;
    }
    private Result result;


   @Path("/lista")  
   public List&lt;Usuario&gt; lista() {  
         List&lt;Usuario&gt; listaUsuario = new ArrayList&lt;Usuario&gt;();  
         Usuario u = new Usuario();  
         u.setNmUsuario("Usuario");  
         listaUsuario.add(u);  
         result.include("lista",listaUsuario);
    }  
}

E aí vc tem acesso na view ao objeto atraves de ${lista}.

Repara tambem que o Result é dado pra vc através de injeção de dependencias, entao, vc nao precisa se preocupar de onde que ele vem, o VRaptor simplesmente vai te dar um result válido.

Ok?

[]'s

yorgan

Obrigado Adriano, funcionou certinho.

[]´s

Daniel

renanreismartins

esse Result foi a coisa mais linda do mundo, evita akele “mundoooooooo véio” de campos anotados ehehehe, acho que isso veio de uma ideia do jforum eheheh

Criado 24 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 4
Participantes 3