Retornando variável do Controller para um Jsp qualquer

5 respostas
katsukawa

Continuando na saga do desbravamento do VRaptor :lol:

Mais uma dúvida de um iniciante chato.. :wink:

É o seguinte pessoal, fiz os métodos de listagem dos itens da minha tabela e criei o Jsp lista usando DisplayTag.

Quando executo a página lista.jsp aparece a página mas com um erro do displayTag -> Nothing found to display.

Eu já verifiquei quase tudo e conclui que a página lista.jsp não está recebendo a variável do controller.

Gostaria de saber como receber a variável produtos que é o resultado da minha listagem e transportar essa variável para meu jsp e listá-la.

Segue meu controller:

package br.com.jcomputacao.vraptor.controller;

import br.com.caelum.vraptor.Resource;
import br.com.jcomputacao.vraptor.dao.DaoFactory;
import br.com.jcomputacao.vraptor.model.Produto;

import java.sql.SQLException;
import java.util.List;

@Resource
public class ProdutosController {
	
	private final DaoFactory daofactory;
	private List <Produto> produtos ;
	
	public ProdutosController(DaoFactory daofactory) {
		this.daofactory = daofactory ;		
	}
	
	public void form () {
	}
	
	public void adiciona(Produto produto) throws SQLException {
		this.daofactory.beginTransaction();
		this.daofactory.getProdutoDao().adiciona(produto);
		this.daofactory.commit();
	}
	
	public List<Produto> getProdutos() {
		return produtos;
	}
	
	public void lista() {
		produtos = this.daofactory.getProdutoDao().listaTudo();
	}
}

Meu lista.jsp:

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Listando Produtos...</title>
</head>
<body>

<h1>Produtos</h1>

<c:out name="${produtos.lenght}" />
xxx

<display:table id="produtos" name="${produtos}" requestURI="lista">
<display:column property="id" sortable="true"/>
<display:column property="nome" />
</display:table>

</body>
</html>

5 Respostas

Lavieri

se vc retorna um List então a variável disponivel é “produtoList”

katsukawa

@Lavieri

Confesso que ainda tô boiando :frowning: … pois bem…

quando acesso minha lista.jsp ele na verdade acessa o método lista() da minha classe ProdutosController.

Ok… a variável produtoList a que você se refere está no método list<> getProdutos mas quando ela é chamada pelo jsp?? ou o VRaptor chama o get sozinho???

E como eu coloco essa variável produtoList na sintaxe da Display:table??

Eu coloquei assim e não funcionou… <display:table id=“produtos” name="${produtoList}" requestURI=“lista”>

Nossa como eu sou burro :evil: , não entendo nada mesmo… :cry:

Lavieri

as variáveis e métodos de seus @Resource não são mais desponibilizado na sua view, o que vc quiser ver na view vc deverá retornar no método, ou seja

public List&lt;Produto&gt; lista() { //aqui fica disponivel produtoList return this.daofactory.getProdutoDao().listaTudo(); }

caso precise de mais de 1 variável na view, vc deve ir colocando elas através de includes no result. o nome que vc der no include, será o nome que poderá acessar na view

public List&lt;Produto&gt; lista() { //aqui fica disponivel produtoList result.include("frist",first); result.include("second",second); result.include("etc",etc); return this.daofactory.getProdutoDao().listaTudo(); }

para disponibilizar a variável result na sua view, vc deve requerer ela no construtor

public ProdutosController(DaoFactory daofactory,Result result) { //.... this.result = result; }

Lagaffe
<display:table id="produto" name="${produtoList}" requestURI="lista">
katsukawa

@Lavieri

Brother, você é muito bom!! :-o Não só me deu uma força com o erro como também me ensinou o que eu tinha dificuldade!!
Obrigadão brother!!

@Lagaffe

Obrigado também brother… na verdade minha maior dúvida era na classe(do lado java) mas me ajudou também!!

:smiley: :smiley:

Pow galera, espero em breve estar aqui tirando dúvidas da galera também… Quero retribuir toda ajuda que estão me dando!!

Vlw!!

Criado 20 de outubro de 2009
Ultima resposta 20 de out. de 2009
Respostas 5
Participantes 3