Struts apostila Caelum

6 respostas
R

Bom dia

Pessoal estou seguindo a apostila do Caelum e estou com alguns problemas, na parte de struts quando vou visualizar o conteudo do banco de dados na tela não aparece nada e quando uso a tag <%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c”%> quando mudo a tag para <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%> aparace o seguinte ${contato.id} ${contato.nome} ${contato.email} ${contato.endereco} e na listaContatos acontece a mesma coisa. Já fiz o action no struts-config.xml

Alguem pode me ajudar desde de já agradeço.

Segue abaixo os codigos

<action 
    		path="/listaContatos" type="br.com.caelum.struts.action.ListaContatosAction">
      		<forward name="lista" path="/lista.jsp"/>
      		<forward name="vazia" path="/lista-vazia.jsp"/>
    	</action>
package br.com.caelum.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.caelum.jdbc.dao.ContatoDao;
import br.com.caleum.jdbc.modelo.Contato;



public class ListaContatosAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest req, HttpServletResponse resp)
			throws Exception {
			// pesquisa no banco de dados a lista completa
			List<Contato> lista = new ContatoDao().getLista();
			req.setAttribute("contato", lista);
			
			
			if(lista.isEmpty()){
				return mapping.findForward("vazia");
			}else{
				// ok.... para onde ir agora?
				return mapping.findForward("lista");
			}
			
		
		
	}
}
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>  
     <!for  
     >  
     <c:forEach var="contato" items="${contatos}">  
        ${contato.id} - ${contato.nome} - ${contato.email} - ${contato.endereco}<br/>  
         
    </c:forEach>  
</html>

6 Respostas

java_es_a_lei

vc tento debugar para ver se a lista esta trasendo seus atributos do DAO

joe_cqr

acho q eh isso, vc ta jogando um valor na seção req.setAttribute(“contato[color=red] [/color]”, lista);

mas na tag vc tenta pegar com um “s” no final

<c:forEach var=“contato” items="${contatos}">

na tag deve estar
<c:forEach var=“contato” items="${contato}">
igual ao nome do atributo da action.

R

Boa Tarde.

Pessoal obrigado pelas dicas, eu mudei para <c:forEach var=“contato” items="${contato}"> e a listaContado.do trouxe o número correto de itens no banco de dados, mais ele trouxe assim:

${contato.id} ${contato.nome} ${contato.email} ${contato.endereco}

${contato.id} ${contato.nome} ${contato.email} ${contato.endereco}

${contato.id} ${contato.nome} ${contato.email} ${contato.endereco}

Alguem pode ajudar?

joe_cqr

tem q imprimir com a tag c:out, exemplo:
<c:out value="${contato.id}"/>
da forma como está ele só joga o texto mm.

R

Boa Tarde.

Agora funcionou, muito obrigado pelas dicas e tenha um bom dia.

abraços

emanuelmm

Engracado,

no meu caso funcionou com a tag <%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c”%>, já com a <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %> nao funciona.

O que define qual tag correta? A versao do JSTL que baixei?

Criado 2 de julho de 2009
Ultima resposta 21 de dez. de 2009
Respostas 6
Participantes 4