Visualizar conteudo de uma lista num forEach numa pagina JSP

Pessoal não consigo visualizar o conteudo da minha lista passada pelo servlet para uma pagina jsp.

Já tentei de tudo e não consigo obter o nome de qualquer campo setado no Bean.

A execução me retorna o seguinte erro:

javax.servlet.ServletException: Unable to find a value for “NomeCd” in object of class “beans_Package.BeansIndice” using operator “.”

Como faço para resolver isso?

Alguém me ajude por favor!!

Seguem abaixo os codigos:

Beans:

1) Bean

package beans_Package;

import java.io.Serializable;

public class BeansIndice implements Serializable{

String NomeCd = "Sem Nome";
String Banda_Artista = "Sem Nome";
String genero = "Sem Genero";
String AnoLancamento = "Sem Ano";

public BeansIndice(){};

public String getNomeCd() {
	return NomeCd;
}
public void setNomeCd(String nomeCd) {
	NomeCd = nomeCd;
}
public String getBanda_Artista() {
	return Banda_Artista;
}
public void setBanda_artista(String Banda_Artista) {
	this.Banda_Artista = Banda_Artista;
}
public String getGenero() {
	return genero;
}
public void setGenero(String genero) {
	this.genero = genero;
}
public String getAnoLancamento() {
	return AnoLancamento;
}
public void setAnoLancamento(String anoLancamento) {
	AnoLancamento = anoLancamento;
}

}

2) Lista de Beans

package beans_Package;

import java.io.Serializable;
import java.util.List;
import beans_Package.BeansIndice;

public class BeansIndiceList implements Serializable{

public List<BeansIndice> beansList;

public List<BeansIndice> getBeansList()
{
	return beansList;
}

public void setBeansList(List<BeansIndice> l)
{
	beansList = l;
}

}

Servlet:

            BeansIndiceList beansIndice = new BeansIndiceList();
	BeansIndice b = null;
	List<BeansIndice> b1 = new ArrayList<BeansIndice>();
	
	        b = new BeansIndice();
	        b.setNomeCd("XXXXXX");
	        b.setAnoLancamento("1958");    
	        b.setBanda_artista("YYYYYY"); 
	        b1.add(b);
	        beansIndice.setBeansList(b1);
	          
	request.setAttribute("BeansIndiceList", beansIndice); 
	
	rd = getServletContext().getRequestDispatcher(target);
	rd.forward(request, response);

JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> Catálogo de CD

<jsp:useBean id=“BeansIndiceList” class=“beans_Package.BeansIndiceList” scope=“request”/>

    <c:forEach items="${BeansIndiceList.beansList}" var=“listaBean”>

  • </c:forEach>

Crie os nomes dos seus atributos do JavaBean seguindo a convenção. Eles devem iniciar com letra minúscula (na maioria dos casos). Então, troque NomeCd para nomeCd. Já deve funcionar.
Abraço.

Olá

tenta assim

 <c:forEach items="${beansIndice.beansList}" var="listaBean"> 

Valeu Cristiano e Roberto, melhorou mas ainda não funcionou.

Colocando as variaveis começando com minusculo fez com que o Java imprimisse o campo nomeCd.

Entretanto, o valor para a variavel nomeCd está como se não tivesse sido setada:

Sem Nome

Parece que a atribuição b.setNomeCd(“XXXXXX”); não teve efeito.

Sabem como resolvo isso?

O que pode ainda estar errado?

Obrigado!!

Códigos mudados:

  1. Bean

package beans_Package;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class BeansIndice implements Serializable{

String nomeCd = "Sem Nome";
String bandaArtista = "Sem Nome";
String genero = "Sem Genero";
String anoLancamento = "Sem Ano";

public BeansIndice(){};

public String getNomeCd() {
	return nomeCd;
}
public void setNomeCd(String nomeCd) {
	nomeCd = nomeCd;
}
public String getBandaArtista() {
	return bandaArtista;
}
public void setBandaArtista(String Banda_Artista) {
	this.bandaArtista = bandaArtista;
}
public String getGenero() {
	return genero;
}
public void setGenero(String genero) {
	this.genero = genero;
}
public String getAnoLancamento() {
	return anoLancamento;
}
public void setAnoLancamento(String anoLancamento) {
	anoLancamento = anoLancamento;
}	

}

2)Lista de Beans

package beans_Package;

import java.io.Serializable;
import java.util.List;
import beans_Package.BeansIndice;

public class BeansIndiceList {

public List<BeansIndice> beansList;

public List<BeansIndice> getBeansList()
{
	return beansList;
}

public void setBeansList(List<BeansIndice> l)
{
	beansList = l;
}

}

  1. Servlet
    BeansIndiceList beansIndice = new BeansIndiceList();
    BeansIndice b = null;
    List b1 = new ArrayList();

             b = new BeansIndice();
             b.setNomeCd("XXXXXX");
             b.setAnoLancamento("1958");    
             b.setBandaArtista("YYYYYY"); 
             b1.add(b);
             beansIndice.setBeansList(b1);
          
     request.setAttribute("beansIndice", beansIndice); 
     
     rd = getServletContext().getRequestDispatcher(target);
     rd.forward(request, response);
    
  2. JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> Catálogo de CD

Olá

Mas qual a mensagem de erro?

Roberto desta vez não tem mensagem de erro não.

No loop

<c:out value="${listaBean.nomeCd}" />

está sendo impresso o valor “Sem Nome” que eu coloquei no Bean incializando a variável.

public class BeansIndice implements Serializable{

String nomeCd = "Sem Nome";

(…)

Só que meu servlet atribui um valor para a variável nomeCd que deveria estar sendo mostrada no JSP:

            BeansIndiceList beansIndice = new BeansIndiceList();
	BeansIndice b = null;
	List<BeansIndice> b1 = new ArrayList<BeansIndice>();
			 
	        b = new BeansIndice();
	        b.setNomeCd("XXXXXX");
	        b.setAnoLancamento("1958");    
	        b.setBandaArtista("YYYYYY"); 
	        b1.add(b);
	        beansIndice.setBeansList(b1);
            
                    request.setAttribute("beansIndice", beansIndice); 
	        rd = getServletContext().getRequestDispatcher(target);
     		rd.forward(request, response);

Mas tem algum problema que não está sendo mostrada a string “XXXXXX”.

Tem alguma sugestão?

Valeu!!

Roberto,

Resolvi. O problema é que por descuido esqueci de colocar a palavra chave this no bean.

Logo o settler setNomeCd não fazia atribuição à variável nomeCd que ficava com o valor de inicialização.

Valeu pela ajuda!

abçs,