Como recuperar uma List pela JSP?

4 respostas
J

Pessoal,
Não sei como recuperar uma List (criada na interface) e apresentar ao usuário através de uma página JSP. Quanto ao vetor pac[] eu alimentei com um select no BD.

public interface InterfacePaciente{

        List todosPacientes(String pac[]) throws EOFException;
    }

    public List todosPacientes(String pac[]) {

        List<Paciente> list = new ArrayList<Paciente>();

        for (int i = 0; i < pac.length; i++) {
            list.add(new Paciente(pac[i]));
        }
        return list;
    }

Segue a parte do JSP onde estou com a dúvida

<%
                List pacientesList = ?????? AQUI ESTÁ A MINHA DÚVIDA ?????????

                if (pacientesList != null) {

                    for (Iterator i = pacientesList.iterator(); i.hasNext();) {
                        Paciente paciente = (Paciente) i.next();
            %>

4 Respostas

R

Normalmente uso o foreach

<%
     List<Paciente> lista = dao.listAll();//dao.listAllPaciente retornaria a lista

     for(Paciente p : lista){
          p.getAtributos();
     }
%>

Lembrando que é só um exemplo, o padrão iterator eu n sei :confused:

J

Obrigado pela resposta RodrigoKaos.

O problema é que não posso utilizar o DAO, pois estou utilizando uma grade computacional. Se fosse para usar o DAO eu sei que dá pra fazer.

A questão é que esta Interface alimenta esta list através de outro método em outra classe java e eu não sei como recuperar esta list em tempo de execução através de uma JSP.

:confused:

S

Você pode ,com um servlet,buscar essa lista executando o dao,depois salva ela em um ArrayList e passa esse ArrayList via request,mais ou menos assim :

List&lt;Paciente&gt; lista = dao.listAll();
request.setAtribute("pacientes" , lista);
RequestDispatcher rs = request.getRequestDispatcher("pagina.jsp");
rs.foward(request,response);

Já na JSP você pode pegar

&lt;% request.getAttribute("lista"); %&gt;

Fiz de cabeça e não está completo,recomendo você dar uma procurada,melhor seria se você utilizasse JSTL e não scriptlet…

J

Obrigado pela resposta Slow17, mas também não posso utilizar o DAO, pois estou utilizando uma grid computacional onde a transação de BD é executada por uma classe do grid, logo a conexão e a execução do executeQuery ou executeUpdate é feita pelo nó da grid.

Estou constantemente buscando alguma alternativa na grid, mas até o momento não encontrei.

Criado 9 de janeiro de 2014
Ultima resposta 9 de jan. de 2014
Respostas 4
Participantes 3