Problemas com JSTL - ForEach não funciona.... [RESOLVIDO]

4 respostas
cpsilva

Galera não consigo listar os elementos de um ArrayList…
Dá uma ajuda…

Segue a classe Grupo

//ESTA FUNCIONANDO PERFEITAMENTE....
package br.com.anuncios.modelo;

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

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.IndexColumn;
import org.hibernate.engine.Cascade;

@Entity @Table(name="TBL_GRUPO")
public class Grupo {
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id_grupo")
	private int id;
	private String descricao;
	private int ativo=1;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name="id_grupo") 
	private List<SubGrupo> subGrupos;	
	public Grupo(){
		subGrupos=new ArrayList<SubGrupo>();
	}		
	public List<SubGrupo> getLista() {		
		return this.subGrupos;
	}
	public List<SubGrupo> getListaAtivo() {
		List<SubGrupo> temp=new ArrayList<SubGrupo>();
		for (SubGrupo sub : this.subGrupos) {
			if(sub.getAtivo()!=0){
				temp.add(sub);
			}
		}
		return temp;
	}
	public void addSubGrupo(SubGrupo subGrupo){
		this.subGrupos.add(subGrupo);
	}
	public void setSubGrupos(List<SubGrupo> subGrupos) {
		this.subGrupos=subGrupos;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public int getAtivo() {
		return ativo;
	}
	public void setAtivo(int ativo) {
		this.ativo = ativo;
	}	
}

Segue a classe DAO:

//ESTAO FUNCIONANDO CORRETAMENTE TODAO OS METODOS
package br.com.anuncios.dao;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.com.anuncios.mail.ClienteDeEmail;
import br.com.anuncios.modelo.Anunciante;
import br.com.anuncios.modelo.Grupo;
import br.com.anuncios.util.HibernateUtil;

public class GrupoDAO {
	
	private Session session = (Session) HibernateUtil.getSession();	
	public void cadastra(Grupo grupo){
		if(this.procura(grupo)==null){
			Transaction tx = null;
			tx = session.beginTransaction();	
			session.save(grupo);		
			tx.commit();
		}else{
			System.out.println("Grupo ja cadastrado...");
		}
	}
	public void remove(Grupo grupo){		
		grupo.setAtivo(0);
		for(int i=0;i<=grupo.getLista().size()-1;i++){
			grupo.getLista().get(i).setAtivo(0);
		}
		this.alterar(grupo);
	}
	public void alterar(Grupo grupo){		
		Transaction tx = null;
		tx = session.beginTransaction();	
		session.update(grupo);		
		tx.commit();
	}	
	public Grupo procura(Grupo grupo){		
		Criteria c = session.createCriteria(Grupo.class);
		c.add(Restrictions.or(Restrictions.eq("id", grupo.getId()),Restrictions.eq("descricao", grupo.getDescricao())));		
		c.add(Restrictions.eq("ativo", 1));		
		if(c.list().size()==0 || c.list().size()>1){
			return null;
		}
		else{
			return (Grupo) c.list().get(0);	
		}
	}	
	public String getTeste(){
		return "abc";
	}
	public List<Grupo> getLista(){		
		Criteria c = session.createCriteria(Grupo.class);				
		c.add(Restrictions.eq("ativo", 1));		
		return c.list();		
	}	
}

Segue a parte da página web (Struts + Hibernate)

<jsp:useBean id="dao" class="br.com.anuncios.dao.GrupoDAO" />				
<c:forEach var="grupo" items="${dao.lista}">
             <li>
                            Descricao:${grupo.descricao}           
              </li>
</c:forEach>

Não funciona, segue o erro:

exception
	javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:275)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Se eu tirar o ForEach ele funciona normalmente,
segue um exemplo que funciona:

<jsp:useBean id="dao" class="br.com.anuncios.dao.GrupoDAO" />
				<c:set var="grupo" value="${dao.lista}" />			
				Descricao:${grupo[0].descricao}<br>
				Descricao:${grupo[1].descricao}

Galera não sei o que fazer mas acredito que seja muito simples para vcs…

4 Respostas

cpsilva

Galera fiz um outro teste e também não rolou…

<c:forEach var="i" begin="1" end="10" step="1">
<c:out value="${i}" />
</c:forEach>
M

Faltou adicionar os jars standard.jar e standard.jar.

aeciovc

falta add jars, e sobre o import lá na página .jsp, ja fez??

os jars do JSTL estão falatando!!

flwss!

cpsilva

Faltou um dos chars.

Obrigado pela ajuda…

Criado 18 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 4
Participantes 3