Apostila Caelum FJ-21 problema struts

bom galera eu to lendo a apostila da caelum 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!!

[code]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;
}

}[/code]

[code]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");
	

}

}

[/code]

[code]

<?xml version="1.0" encoding="ISO-8859-1"?>
<action path="/addContato" name="ContatoForm" type="br.com.caelum.struts.action.AdicionaContatoAction" >
	<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>

[/code]

<%@ 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" 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 :slight_smile: ) nao sei mais o que fazer quem puder me ajudar ai desde jah agradeço!!

Abraço a todos!!

Olá

Tenta fazer assim.. o que extends de ActionForm, troca para ValidatorForm... e sobrecreve o método reset
     acho que isso funciona..
package br.com.caelum.struts.form;

import org.apache.struts.action.*;

import br.com.caelum.jdbc.Contato;

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

     public void reset(ActionMapping mapping, HttpServletRequest request) {
		super.reset(mapping, request);
		this.contato = new Contato();
	}

}

Espero ter ajudado
Flwsss

Entendi o que vc quer fazer porem ele vai lançar uma Exception na hora de validar pois ele nao vai aceitar

parametros nulos ele deve lançar um illegalArgument. O que acontece eh que o cast que eu faço pra formulario

esta me retornando null o motivo eu nao sei porque!! Valeu pela tentativa ai brother!!

Abraço!!

Alguem ai tem a soluçao??? Jah to a mais de um me tentando resolver isso to sempre postando topico aqui mas poucos me dizem uma possivel soluçao!!

Abraço a todos!!

Rafael,

Tenta fazer um teste adicionando mais uma propriedade qualquer no teu form, tipo “teste” e coloca os get/set pra ela.

Ai no jsp coloca:

..
Teste:  
<html:text property="teste"/><br/>
..

Vendo assim parece que está tudo ok, então talvez seja algum problema com as propriedades aninhadas. Se der certo o “teste”, tenta zipar teu projeto e colocar aqui, assim da pro pessoal dar uma testada.

Só um detalhe, sua propriedade na bean Contato chama “endereço” mesmo?

Cara tem como vc postar a mensagem de erro que sai no console ou no servidor. Obrigado

Poww lucianoo funcionou o que vc me disse funcionou perfeitamente!!

Entao eu tentei fazer a mesma coisa com o meu contato sem aninhar ela a um objeto contato assim:

<html:form action="/novoContato" method="post">
Nome:
<html:text property="nome" /><br/>
Email:
<html:text property="email"/><br/>
Endereco:
<html:text property="endereco"/><br/>

Entao eu fiz os metodos get e set para essas propriedades e funcionou, ele add no banco tudo certo, porem

gostaria de sber porque nao

funciona com as propriedades aninhadas!??

Ahh e nao eh endereço nao eh endereco!!

Valeu cara ajudou muito!!

Se tupoder me dar o teu e-mail eu mando o projeto pra ti!!

Valeu !!

Abraço!!