Problemas com DisplayTag (Nothing found to display)

Bom dia, pessoal! Tudo bem?

Estou voltando aos estudos de Java para Desenvolvimento Web e estou acompanhando a apostila FJ-21 da Caelum.
Nela existe um desafio, de listar os contatos de um datasource usando a taglib Displaytag. Porém quando eu passo um objeto do tipo List, ao invés de ele exibir os contatos na tabela, ele exibe o texto “Nothing found to display”.

Aqui está um trecho do meu JSP:

<jsp:useBean id="dao" class="br.com.caelum.jdbc.dao.ContatoDAO" /> <display:table name="${dao.lista}" />
Lembrando que a EL ${dao.lista} retorna um objeto do tipo List, através do método getLista() presente na classe ContatoDAO.

Alguém sabe o que pode estar dando errado?
Eu consegui listar os contatos usando a implementação abaixo, mas eu não queria misturar código JAVA no meu JSP. Existe algum jeito de fazer funcionar apenas com EL?

<% request.setAttribute("contatos", new ContatoDAO().getLista()); %> <display:table name="contatos" />

Agradeço desde já a atenção! :wink:

Vc tá colocando essa lista no Request??

Você diz dessa forma que eu postei?

<% request.setAttribute("contatos", new ContatoDAO().getLista()); %> <display:table name="contatos" />

Caso seja, sim. Dessa forma funciona. Mas isso é scriptlet, queria saber se da pra fazer algo parecido apenas com Expression Language. Essa página lista todos os contatos da tabela, e eu estou acessando ela diretamente pelo endereço “http://localhost:8080/fj21-agenda/lista-contatos-elegante.jsp”, então nem passa por nenhum servlet.

Como consigo listar via JSP usando jsp:useBean para instanciar o DAO e <c:forEach> para iterar sobre a lista ${dao.lista}, achei que a Displaytag também pudesse iterar sobre essa lista.

Então não tem jeito, tem que usar o scriptlet para adicionar ao Request?

Não, funciona sem ser por scriplet.

tente isso


<display:table name="${lista}" requestURI="br.com.caelum.jdbc.dao.ContatoDAO.NOMEDOSEUMETODOQUERETORNALISTA" />

Também não deu =/ O nome do método é getLista(), então adicionei o código:

Mas mesmo assim continua exibindo “Nothing found to display”.

No meu caso eu fiz assim, soh que no meu não está aparecendo a data…
E eu achei que iria ficar coloridinho, e no meu não ficou, alguém saberia como fazer? ‘-’

Obrigada!

	<!-- cria o DAO -->
	<jsp:useBean id="dao" class="exercicios.javaweb.dao.ContatoDao" />
	
	 <%request.setAttribute("lista", dao.getLista()); %>  
	
	<display:table name= "lista">  
            <display:column title="Nome" property="nome" />  
       
             <display:column title="E-mail" property="email" autolink="true" />  

            <display:column title="Endereço" property="endereco" />  
              
            <fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy" var="dataEmTexto"/>  
            <display:column title="Data de nascimento" value="${dataEmTexto}" />  
              
        </display:table>