Apostila Caelum FJ-21 problema

5 respostas
R

bom galera eu to lendo a apostila da ceelum de desenvolviento pra web!

Eu tenho uma açao que insere um contato no banco de dados so que a minha açao ta inserindo os campos

todos como null mando ai o codigo das classes e dos arquivos de configuraçao!!

package br.com.caelum.struts.form;

import org.apache.struts.action.*;

import br.com.caelum.jdbc.Contato;

public class ContatoForm extends ActionForm {
	
	private Contato contato = new Contato();
	
	public Contato getContato(){
		
		return this.contato;
	}

}
package br.com.caelum.struts.action;

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.Contato;
import br.com.caelum.jdbc.ContatoDAO;
import br.com.caelum.struts.form.ContatoForm;

public class AdicionaContatoAction extends Action {
	
	@Override
	public ActionForward execute(ActionMapping map, ActionForm form, 
			HttpServletRequest request, HttpServletResponse response) 
			throws Exception {
		
		ContatoForm formulario = ((ContatoForm)form);
		
		Contato contato = formulario.getContato();
		
		ContatoDAO dao = new ContatoDAO();
		
		dao.addContato(contato);
		
		return map.findForward("sucess");
		
	
	}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<struts-config>

<form-beans>  
	<form-bean name="ContatoForm" type="br.com.caelum.struts.form.ContatoForm"/>  
</form-beans> 
        
<action-mappings>

	<action path="/addContato" name="ContatoForm" type="br.com.caelum.struts.action.AdicionaContatoAction" scope="request" input="/novo.jsp">
		<forward name="sucess" path="/exemplo.jsp"/>
	</action>
	
	<action path="/teste" type="br.com.caelum.struts.action.TesteSimplesAction">
		<forward name="ok" path="/exemplo.jsp"/>
	</action>
	
	<action path="/listaContatos" type="br.com.caelum.struts.action.ListaContatosStruts">
		<forward name="lista" path="/lista.jsp"/>
		<forward name="vazia" path="/lista-vazia.jsp"/>
	</action>

</action-mappings>

<message-resources parameter="MessageResources"/>

</struts-config>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<html:html>
	<head>
		<title> Adicionando um contato </title>
	</head>
	
	<html:errors/>
	
	<html:form action="/addContato" method="post" focus="contato.nome">
	
	Nome:
	<html:text property="contato.nome"/><br/>
	
	Email:
	<html:text property="contato.email"/><br/>
	
	Endereco:
	<html:text property="contato.endereço"/><br/>
	
	<html:submit>Enviar Dados</html:submit><br/>
	
	</html:form>
	
</html:html>

eu sei que o problema esta no cast que esta retornando um null ai ele manda pro metodo addContato os

valores nulos so que nao sei porque isso tah acontecendo o meu mapeamento esta todo correto(ao menos eu

acho que tah :) ) nao sei mais o que fazer quem puder me ajudar ai desde jah agradeço!!

Abraço a todos!!

5 Respostas

mateusbrum

Tente desta forma:

package br.com.caelum.struts.form;  
   
 import org.apache.struts.action.*;  
   
 import br.com.caelum.jdbc.Contato;  
   
 public class ContatoForm extends ActionForm {  
       
     private Contato contato;  
       
     public Contato getContato(){  
           
         return this.contato;  
     }  


     public Contato setContato(final Contato aContato){  
           
         this.contato = aContato;  
     }  


}

Obs: Não é uma boa prática chamar a camada de persistencia na sua camada de controle, pois assim você está "furando" o MVC.

public class AdicionaContatoAction extends Action {  
       
     @Override  
     public ActionForward execute(ActionMapping map, ActionForm form,   
             HttpServletRequest request, HttpServletResponse response)   
             throws Exception {  
           
         ContatoForm formulario = ((ContatoForm)form);  
           
         Contato contato = formulario.getContato();  
           
        ContatoDAO dao = new ContatoDAO();  
           
         dao.addContato(contato);  
           
         return map.findForward("sucess");  
           
       
     }  
}

Boa sorte.

R

Bom teve um erro no qeu tu me deu no metodo setContato vc o definiu como do tipo contato sendo qeu ele nao retorna valor algum!!

Mas como eh qeu ficaria o meu AdicionaContatoAction ?? testei das diversar formas possiveis e nada deu certo!!

E outra eu to aprendendo agora o padrao MVC e por isso gostaria de lhe perguntar como seria ficaria entao a minha classe seguindo esse padrao!!

Pelo qeu eu li a camada de controle nao eh responsavel por fazer a ligaçao entra a view e a model ??

no qeu eu fiz ocorre apenas a chamada ao metodo da classe que realiza a persistencia de dados!!

Bom se eu tiver errado em algum quesito ficarei muito grato se vc me esclarecer as coisas
Valeu Abraço!!!

R

vamo la galera ninguem tem uma dica ai !??

:cry:

R

Powww galera ninguem da um chute do que seja o meu problema!!

:cry:

R

Powww o problema pode ser no meu eclipse??

Nao sei se eu to colocando os .jar certos no build path alguem me ajuda ai!!??

Valeuu!!!

Criado 1 de janeiro de 2009
Ultima resposta 6 de jan. de 2009
Respostas 5
Participantes 2