Dúvida com forEach para carregar caminho de imagens do banco de dados

3 respostas
C
Olá gujeiros, estou desenvolvendo um sistema e tenho uma tela que mostrará as imagens dos produtos e suas respectivas informações, no banco de dados já tenho salvo o caminho da imagem, montei a seguinte estrutura para "desenhar a página": JSP:
<body bgcolor="#FFFFFF">
<div id="apDiv3">
  <table width="763">
  <c:forEach items="${produto.Nao sei o que colocar aqui}" var="produto">
    <tr>
      <th width="170" height="175" scope="col"><div align="center"><img src="${produto.caminho_imagem }" width="175" height="170" /></div></th>
      <th width="2" scope="col">&nbsp;</th>
      <th width="170" scope="col">&nbsp;</th>
      <th width="4" scope="col">&nbsp;</th>
      <th width="170" scope="col">&nbsp;</th>
      <th width="1" scope="col">&nbsp;</th>
      <th width="170" scope="col">&nbsp;</th>
    </tr>
    <tr class="BMWEB">
      <td class="BMWEB style29"> <div align="center"><span class="style25">${produto.grupo}</span> ${produto.descricao_produto } </div></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </c:forEach>
Classe Produto:
package br.bmweb.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="TB_PRODUTO", schema="bmweb")
public class Produto {
	private Integer cod_produto;
	private String descricao_produto, grupo, caminho_imagem;
	private float valor, altura, comprimento, largura, peso;
	
	@Id
	@GeneratedValue
	@Column(name="PR_COD_PRODUTO", nullable = false)
	public Integer getCod_produto() {
		return cod_produto;
	}
	public void setCod_produto(Integer codProduto) {
		cod_produto = codProduto;
	}
	
	@Column(name="PR_DESCRICAO_PRODUTO", nullable = false)
	public String getDescricao_produto() {
		return descricao_produto;
	}
	public void setDescricao_produto(String descricaoProduto) {
		descricao_produto = descricaoProduto;
	}
	
	@Column(name="PR_GRUPO", nullable = false)
	public String getGrupo() {
		return grupo;
	}
	public void setGrupo(String grupo) {
		this.grupo = grupo;
	}
	
	@Column(name="PR_VALOR", nullable = false)
	public float getValor() {
		return valor;
	}
	public void setValor(float valor) {
		this.valor = valor;
	}
	
	@Column(name="PR_ALTURA")
	public float getAltura() {
		return altura;
	}
	public void setAltura(float altura) {
		this.altura = altura;
	}
	
	@Column(name="PR_COMPRIMENTO")
	public float getComprimento() {
		return comprimento;
	}
	public void setComprimento(float comprimento) {
		this.comprimento = comprimento;
	}
	
	@Column(name="PR_LARGURA")
	public float getLargura() {
		return largura;
	}
	public void setLargura(float largura) {
		this.largura = largura;
	}
	
	@Column(name="PR_PESO")
	public float getPeso() {
		return peso;
	}
	public void setPeso(float peso) {
		this.peso = peso;
	}
	
	@Column(name="PR_CAMINHO_IMAGEM")
	public String getCaminho_imagem() {
		return caminho_imagem;
	}
	public void setCaminho_imagem(String caminhoImagem) {
		caminho_imagem = caminhoImagem;
	}
}
Classe ProdutoController:
package br.bmweb.controller;

import java.util.List;

import br.bmweb.bean.Produto;
import br.bmweb.dao.ProdutoDao;
import br.com.caelum.vraptor.Resource;

@Resource
public class ProdutoController {
	private final ProdutoDao dao;
	public ProdutoController(ProdutoDao dao) {
	this.dao = dao;
	}

	public List<Produto> lista() {
		return dao.listaTudo();
	}
	
	public void produto(){

	}
	
	public List<Produto> listaAcabamentos(){
		return dao.listaAcabamentos();	
	}
}
Classe ProdutoDao:
package br.bmweb.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;

import br.bmweb.bean.Produto;
import br.bmweb.util.AbreSession;
import br.com.caelum.vraptor.ioc.Component;

@Component
public class ProdutoDao {
	Session session = new AbreSession().getSession();
	
	public void recarrega(Produto produto) {
		session.refresh(produto);
	}

	public List<Produto> listaTudo() {
		return this.session.createCriteria(Produto.class).list();
	}
	
	public List<Produto> listaAcabamentos(){
		return this.session.createCriteria(Produto.class).add( Expression.eq("cod_produto", 10) ).list();
	}
}
Como podem ver estou usando Hibernate e V-Raptor. Na classe ProdutoDao criei o método listaAcabamentos em que desejo fazer filtro para retornar o produto com código = 10. Não estou sabendo a forma correta de usar a tag no JSP para que ele execute o método "listaAcabamentos()" e retornar a descrição do produto e o caminho da imagem. De que forma eu poderia fazer?? Fiquei com dúvida em como fazer na linha 4 do JSP.

3 Respostas

Hebert_Coelho

Boa noite. Dá uma olha aqui óh! Molezinha!
http://www.herongyang.com/jsp/jstl_core_2.html

Coloca seu objeto no request e lá na JSP mandar um :

<c:forEach var="objetoUnico" items="${objeto.lista}"> ${objetoUnico.valor} </c:forEach>

E pronto! [=

Apenas lembro que seu método tem que começar com getXXX. Caso não queria alterar o nome do método, coloca a lista no request e apenas itere.

C

Ok, entendi que o resultado do meu SELECT deve ser armazenado numa lista, mas na qual classe que é melhor fazer isto? Adaptar o método “listaAcabamentos()” da controller para fazer isto? Criar outra classe que chama a controller e adiciona o retorno numa lista? Qual a forma correta?

Hebert_Coelho

Vc pode jogar a lista direto no request:

request.setAttribute("carros", fabrica.getCarros());

Isso já seria o suficiente.

Criado 1 de agosto de 2010
Ultima resposta 3 de ago. de 2010
Respostas 3
Participantes 2