ArrayList dentro do while só retorna o último registro Nx

[color=“blue”][color=brown]Alguém sabe o porque de o array só receber o último registro da tabela ? Esse objeto ArrayList será usado para criação de um arquivo XML, onde tenho um método que receberá esse objeto ArrayLists para geração do XML.

Tenho uma classe “Links” que será instanciada criando um objeto dessa classe para ser passado num ArrayList, posteriormente na classe ConjLista Obs: Não há erro de sintaxe.

//*********************************************** [/color][/color]
package dados;

public class Links {

public String url, pagina;
public int linha;

public void setUrl(String u){
url = u;
}

public void setPagina(String p){
pagina = p;
}

public String getUrl(){
return url;
}

public String getPagina(){
return pagina;
}

public int getLinha() {
return linha;
}

public void setLinha(int l) {
linha = l;
}

}
[color=“blue”][color=red]//*************************************************

Classe ConjLista onde é criado meu ArrayList e com os métodos de cadastrar, mostrar e mostrar o total de registros.

//*************************************************[/color] [/color]

package conjunto;
import java.util.ArrayList;
import java.util.List;
import dados.Links;
public class ConjLista {

List<Links> lista = new ArrayList<Links>();

public void cad(Links objLinks){
lista.add(objLinks);
}

public Links mostra(int i){
return lista.get(i);
}

public int tamanho(){
return lista.size();
}

}

[color=“blue”]//*************************************************

Aqui é minha página JSP que executa uma instrução SQL e grava no ArrayList. Obs: Não há erro de sintaxe.
O problema aqui é que dentro do while o ArrayList recebe somente o último registro de minha tabela 5 vezes, que é a quantidade de rigstros, ou seja, os dados do Array é repitido 5 vezes e quando eu listo o ArrayList pelo índice usando for, ele imprime na tela os dados repitidos somente do último registro da tabela. [/color]

<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@include file=“WEB-INF/jspf/acesso.jspf” %>
<%@include file=“WEB-INF/jspf/cabec.jspf” %>
<%@page import=“conjunto.ConjLista” %>
<%@page import=“java.util.Iterator” %>
<%@page import=“dados.Relatorio” %>
<%@page import=“dados.Links” %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd”>

<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title>XML Generation</title>
</head>
<body>
<%
Links objLinks = new Links();
ConjLista objConj = new ConjLista();

int l=0;
ResultSet res = stm.executeQuery(“select nome_pagina,url from tblinks”);
while(res.next()){

l++;
objLinks.setPagina(res.getString(1));
objLinks.setUrl(res.getString(2));
objLinks.setLinha(l);
objConj.cad(objLinks);
//res.afterLast();
}

out.println("<br>--------------------------------------<br>");

for(int c=0;c < objConj.tamanho();c++){
out.println(“Linha: “+objConj.mostra©.getLinha()+” Página: “+objConj.mostra©.getPagina()+” URL: “+objConj.mostra©.getUrl()+”<br>”);
}

res.close();
%>
</body>
</html>
[color="#444444"][/color]

Só está recebendo um, porque você só está adicionando um, está adicionando o mesmo objeto varias vezes, assim ele vai manter só um mesmo…

Crie a instancia do objeto dentro do while…

[code]Links objLinks = new Links();

int l=0;
ResultSet res = stm.executeQuery("select nome_pagina,url from tblinks");
while(res.next()){
ConjLista objConj = new ConjLista();
l++;
objLinks.setPagina(res.getString(1));
objLinks.setUrl(res.getString(2));
objLinks.setLinha(l);
objConj.cad(objLinks);
//res.afterLast();
}[/code]