Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema para usar o foreach da JSTL

Olá, estou tentando iterar dentro de um jsp, mas não está exibindo nada.

Dentro da JSP eu chamo o método usuarioDAO.getLista(). É um método estático, pois dentro dele está sempre retornando uma lista que passei.

O código da JSP está abaixo, mas nada é exibido.

Alguém pode ajudar?

<%
    UsuarioDAO usuarioDAO = new UsuarioDAO();
    List<UsuarioVO> usuarios = usuarioDAO.getLista();
%>

    <h1>Iterando com JSTL</h1>

    <c:forEach items="${usuarios}" var="usuario">
        <c:out value="${usuario.id}"/><br>
    </c:forEach>

Agora se eu fizer usando apenas EL, funciona:

    <table>
        <%
            for (UsuarioVO usuario : usuarios) {
        %>
        <tr>
            <td><%=usuario.getId()%></td>
            <td><%=usuario.getEmail()%></td>
            <td><%=usuario.getTipoUsuario()%></td>
            <td><%=usuario.isAtivo()%></td>
        </tr>
        <%
            }
        %>
    </table>
4 respostas

Fernando, lembre-se sempre que for exibir código ou registros, utilizar o botão **{ } inserir código que tem acima da caixa de edição, pois facilita a leitura pra quem for te ajudar =)

Ok, vamos lá. Não parece ter nada de errado com o seu código, então o problema deve ser externo.

Sei que você disse que o método do DAO sempre retorna uma lista estática. Só para garantir, tente imprimir logo antes do foreach o tamanho da lista com ${usuarios.size()}.

Tente também utilizar o getter completo ao imprimir o id para conferir se tem algo de errado nessa parte da lógica (${usuario.getId()}).

Se continuar dando erro, compartilhe também o código do DAO e do Controller?

solução!

Acabei de resolver, mas foi adicionando a coleção no request.

request.setAttribute("usuarios", usuarios);

De toda forma, obrigado, Marco Salles.

Boa, Fernando! Esses detalhes muitas vezes acabam escapando. Marque sua própria resposta como solução!

E bons estudos!

Obrigado, Marco.