Problemas pra exibir lista usando JSTL

2 respostas
K

Olá pessoal. Tentei, tentei e tentei mas não consegui fazer esse exercício. Estudando pela apostila da Caelum fj-21, estou na parte de Struts. O exercício que estou fazendo é um que lista os contatos de uma tabela no mysql.. Aqui vão os códigos:

Classe ListaContatosAction

package br.com.torres.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import br.com.torres.dao.ContatoDAO;
import br.com.torres.modelo.Contato;

public class ListaContatosAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// pesquisa no banco de dados a lista completa
		List<Contato> lista = new ContatoDAO().getLista();
		request.setAttribute("contatos", lista);
		
		//ok.. para onde ir agora?
		
		if(lista.isEmpty()) {
			return mapping.findForward("vazia");
		} else {
			return mapping.findForward("lista");
		}
		
	//	return mapping.findForward("vazia");
		
	}
}

Arquivo lista.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>

    <!-- for -->
    <c:forEach var="contato" items="${contatos}">
        ${contato.id} - ${contato.nome} <br/>
    </c:forEach>
</html>

Parte relevante do arquivo struts-config.xml

<action path="/teste"
        type="br.com.torres.struts.action.TesteSimplesAction">
        <forward name="ok" path="/exemplo.jsp"></forward>
</action>
        <action path="/listaContatos" type="br.com.torres.struts.action.ListaContatosAction">
                <forward name="lista" path="/lista.jsp"></forward>
                <forward name="vazia" path="lista-vazia.jsp"></forward></action>

Enfim, eu estou querendo que mostre os contatos da minha tabela.. Há vários contatos nela.. mas quando vou ver o resultado na página JSP, aparece apenas o resultado:

${contato.id} - ${contato.nome}

Ao invés de aparecer o id e o nome de cada contato

Coloquei jars do JSTL em td que é pasta, WEB-INF/lib, WEB-INF e mesmo assim não funfa

Alguem teria uma solução?

Obrigado!

2 Respostas

A

O JSTL trabalha com os gets e sets correto?
para que você possa realizar a chamada do seu método que retorna o seu id e contato, ele precisa ser inicializado com get#() para que isso aconteça. Na apostila que você está lendo, no inicio do JSTL está comentando sobre isso, verifica se não está faltando o getNome apra o retorno da informação.

K

Olá andre. Essa parte:

${contato.id} - ${contato.nome} <br/>

É código EL (Expression Language). Basta apenas colocar contato.id, ao invés de contato.getId() que ele já reconhece…

Ainda não consegui descobrir o motivo de não mostrar os contatos e ao invés disso aparecer:
${contato.id} - ${contato.nome}

Sendo que deveria aparecer os contatos da minha tabela…

Alguém mais poderia dar uma dica?

Obrigado!!!

Criado 14 de outubro de 2009
Ultima resposta 15 de out. de 2009
Respostas 2
Participantes 2