Dúvida no struts

1 resposta
A

Olá pessoal peguei uma apostila da caelum e chegou numa parte que apareceu algo diferente da apostila.
Já pesquisei e não sei o que pode ser.
Na hora de executar o código aparece isso:

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

Esse é o código:
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>

ListaContatosAction

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.caelum.jdbc.modelo.Contato;

public class ListaContatosAction extends Action {

	 public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception
	 {
		  List<Contato> lista = new ContatoDAO().getLista();
		  request.setAttribute("contatos", lista);
		  
		  
		  if(lista.isEmpty())
		  {
			  return mapping.findForward("vazia");
		  }
		  else
		  {
			  return mapping.findForward("lista");
		  }
		  
		  
		  
	 }
}

struts-config.xml

<action path="/listaContatos" type="br.com.caelum.struts.action.ListaContatosAction">
               <forward name="lista" path="/lista.jsp"/>
               <forward name="vazia" path="/lista-vazia.jsp"/>
</action>

<action path="/novoContato" name="ContatoForm" 
                  type="br.com.caelum.struts.action.AdicionaContatoAction">
                   <forward name="ok" path="/listaContatos.do"/>
           </action>

O que pode ser? Desde já eu agradeço. :slight_smile:

1 Resposta

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

O atributo items="${contatos}" dentro do <c:forEach> irá pegar a lista setada na request:
request.setAttribute(“contatos”, lista); na classe ListaContatosActrion.

Quando o <c:forEach> pegar os valores da lista setada na request, ele irá jogar todos os valores da lista dentro do var=“contato” que é uma variável.

A linha:
${contato.id} - ${contato.nome}
, Representa os valores de cada posição da lista que está sendo representada pela variável contato.

Não sei expliquei direito qualquer dúvida é só falar…

Criado 10 de setembro de 2009
Ultima resposta 7 de out. de 2009
Respostas 1
Participantes 2