Enviar ArrayList para JSP de um Servlet

Pessoal, criei um classe chamada MinhaClasse que tem os métodos Get e Set para id, nome e idade.
Em um servlet eu fiz uma instancia desta classe e criei um ArrayList assim:

MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();

Depois em um laço for eu foi alimentando desta forma

...
testeteste.setId(idBase);
teste.setNome(nomeBase);
teste.setIdade(idadeBase);

lista.add(teste);
...

request.setAttribute("valores", lista);
request.getRequestDispatcher("/retornaDados.jsp").forward(request, response);

E depois utilizando JSTL em um arquivo JSP eu recuperei os resultados assim:

<c:forEach var="valor" items="${valores}">
	<span><b>ID: </b>${valor.id}</span> -
	<span><b>Nome: </b>${valor.nome}</span> -
	<span><b>Idade: </b>${valor.idade}</span> </br>
</c:forEach>

O problema é que somente é impresso o último valor repetidamente, fica dessa forma:
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45

Fiz um teste no for, que lê um arquivo texto e o valor carregado nos métodos Sets está correto, parece que na hora de assimilar no ArrayList é que bagunça tudo.
Alguém pode dar uma ajuda sobre onde está o erro?

Coloca seu “for” completo ai… eu arriscaria dizer que você ta fazendo algo assim:

MinhaClasse teste = new MinhaClasse();  
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();  
for (....) {
  teste.setId(idBase);  
  teste.setNome(nomeBase);  
  teste.setIdade(idadeBase); 
  lista.add(teste);
}

dessa forma você ta sempre usando a mesma referência de MinhaClasse, e aí essa referencia sempre fica com o ultimo valor… pra corrigir cria uma instancia nova a cada iteração do “for”, tipo assim:

MinhaClasse teste = new MinhaClasse();  
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();  
for (....) {
  teste = new MinhaClasse();
  teste.setId(idBase);  
  teste.setNome(nomeBase);  
  teste.setIdade(idadeBase); 
  lista.add(teste);
}

[quote=Rendrys]Coloca seu “for” completo ai… eu arriscaria dizer que você ta fazendo algo assim:

MinhaClasse teste = new MinhaClasse();  
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();  
for (....) {
  teste.setId(idBase);  
  teste.setNome(nomeBase);  
  teste.setIdade(idadeBase); 
  lista.add(teste);
}

dessa forma você ta sempre usando a mesma referência de MinhaClasse, e aí essa referencia sempre fica com o ultimo valor… pra corrigir cria uma instancia nova a cada iteração do “for”, tipo assim:

MinhaClasse teste = new MinhaClasse(); ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>(); for (....) { teste = new MinhaClasse(); teste.setId(idBase); teste.setNome(nomeBase); teste.setIdade(idadeBase); lista.add(teste); } [/quote]

Cara, segui seu raciocino, mas agora no meu JSP o valor não chega, fica tudo em branco, assim:
ID: - Nome: - Idade:
ID: - Nome: - Idade:
ID: - Nome: - Idade:
ID: - Nome: - Idade:

Coloca seu codigo completo ae

seu for tem que estar assim, provavelmente utilizando um ResultSet de uma determinada consulta sql ao banco:

MinhaClasse teste = new MinhaClasse();    
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
while(rs.next())
{
     teste = new MinhaClasse();  
  teste.setId(idBase);    
  teste.setNome(nomeBase);    
  teste.setIdade(idadeBase);   
  lista.add(teste);  
}

acredito que o resto esteja certo.