Iniciando no Struts

7 respostas
D

Seguindo a apostila da caelum (caelum-java-web-fj21) estava indo bem até que enrosquei num ponto e não consigo achar oq está errado…
Me parece que o erro ta action ou no arquivo jsp. O resultado da chamada a listaContatos.do é uma tela em branco.
Trata-se do exercício 14.12 - Exercício: ListaContatosAction.
Até onde consegui verificar, ao executar o exercício, a Action ListaContatosAction é chamada, aparece o seguinte no console:

01/04/2009 13:29:51 org.apache.struts.chain.commands.servlet.CreateAction createAction
INFO: Initialize action of type: br.com.caelum.struts.ListaContatosAction

Porem, coloquei um System.out.println(“Executando…”); mais nada aparece no console…

O Struts (1.3.10) aparentemente ta funcionando pois os exercícios anteriores deram certo, o que difere esse dos anteriores é o uso da passagem de um objeto (contatos) para a lista.jsp através dessa linha:

req.setAttribute(“contatos”, lista);

Alguem que já deu uma olhada nessa apostila poderia dar uma ajuda?

7 Respostas

alanbrasil1984

eu nunca vi essa apostila mais acredito que vc não colocou o mapeamento dessa jsp no struts-config.xml

verifique isso no seu return la.

D

alanbrasil1984:
eu nunca vi essa apostila mais acredito que vc não colocou o mapeamento dessa jsp no struts-config.xml

verifique isso no seu return la.

Segui como nos outros exemplos:




alanbrasil1984

coloca a Action ai para eu ver pra vc…

bruno_savi

cola tua action.

D
package br.com.caelum.struts;

import java.util.List;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

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

public class ListaContatosAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			ServletRequest req, ServletResponse res) throws Exception {
		
		System.out.println("Executando o código da lógica de negócios...");
		
		List<Contato> lista = new ContatoDAO().getLista();
		req.setAttribute("contatos", lista);
		
		for(int i = 0; i < lista.size(); i++){
			System.out.println("Nome:" + lista.get(i).getNome() + " - " + lista.get(i).getEmail());
		}
		
		if(lista.isEmpty()) {
			return mapping.findForward("vazia");
		} else {
			return mapping.findForward("lista");
		}
	}
}

struts-config.xml (apenas o trecho action-mappings)

<action-mappings>
	<action path="/listacontatos" type="br.com.caelum.struts.ListaContatosAction">
		<forward name="lista" path="/lista.jsp"></forward>
		<forward name="vazia" path="/lista-vazia.jsp"></forward>
	</action>
</action-mappings>
------------------------------------- Como disse antes, coloquei uns "out's" pra ver se passava por ali, mais n aparece nada.... O trecho que retorna a "lista" testei numa outra classe e ta funcionando certinho, retorna uma coleção de contatos...

Desde já agradeço a atenção de vcs...

D

Que pena… achei que iria conseguir desvendar o problema nesse fórum…

passaty

O problema esta na linha 3 do struts config.

coloque “contatos” ao inves de “lista”

Criado 1 de abril de 2009
Ultima resposta 21 de jun. de 2009
Respostas 7
Participantes 4