da onde esta vindo o listaCds??? Aqui vai um exemplo de como usar o forEach, a core em si está certa e não precisa de mapeamento nenhum. Exemplo:
<!
cria a lista >
<jsp:useBean id="dao" class="br.com.caelum.jdbc.dao.ContatoDAO"/>
c) Faça o forEach
<!
for >
<c:forEach var="contato" items="${dao.lista}">
<li>
nome: ${contato.nome},
email ${contato.email},
endereço ${contato.endereco}
</li>
</c:forEach>
onde dao é o objeto, no caso o bean com os metodos de manipulação da base de dados relacionado a contatos.No caso, o meu metodo de listagem é
public List<Contato> getLista()
quando eu chamo o dao.lista na expression language do forEach a expression language sabe que tem que chamar o getLista, sozinha, ela sabe quando chamar os getters e setters.
O único porém é que o editor do eclipse dá o erro que eu falei. Mas funciona direitinho. Acho que alguma configuração do Amateras plugin do Eclipse que faz com que ele não encontre o TLD da Core e daí aparece como o erro. Mas a aplicação está funcionando.