No getter method for property

3 respostas
D

Olá a todos,

Estou seguindo a apostila de Web da Caelum e estou com uma dificuldade, abaixo…

Erro:

19/07/2009 20:15:22 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: No getter method for property: "contato.endereco" of bean: "br.com.caelum.struts.form.ContatoForm"
	at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:915)
	at org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:126)
	at org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
	at org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80)
	at org.apache.jsp.novo_jsp._jspx_meth_html_005ftext_005f2(novo_jsp.java:244)
	at org.apache.jsp.novo_jsp._jspx_meth_html_005fform_005f0(novo_jsp.java:175)
	at org.apache.jsp.novo_jsp._jspx_meth_html_005fhtml_005f0(novo_jsp.java:114)
	at org.apache.jsp.novo_jsp._jspService(novo_jsp.java:79)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)

Meu codigo:

BEAN

public class Contato {

	private String nome;
	private String email;
	private String endereço;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEndereço() {
		return endereço;
	}
	public void setEndereço(String endereço) {
		this.endereço = endereço;
	}
	
	
}

action form

public class ContatoForm extends ActionForm{

	private Contato contato = new Contato();

	public Contato getContato() {
		return contato;
	}
}
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;

public class AdicionaContatoAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
		throws Exception {
		// log
		System.out.println("Tentando criar um novo contato...");

		ContatoForm formulario = (ContatoForm) form;

		Contato contato = formulario.getContato();

		return mapping.findForward("ok");
		}
}
<?xml version="1.0" encoding="UTF-8"?>
<struts-config>

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

<action-mappings>

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

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

Eu não gostaria de duplicar as informações do meu bean na actionform, eu gostaria de aproveitar os códigos do bean…

Sera que alguém poderia me ajudar?

Obrigado

3 Respostas

Adriano_Almeida

Oi, o problema é que o seu getter do endereço está com ç (cedilha) e no jsp vc esta usando contato.endereco (sem cedilha).

D

Olá pafuncio, muito obrigado pela a sua ajuda.

Fiz a correção, mas ainda persiste o problema. os outros attributos também aparece no erro. é como se eu nao tivesse dado os get deles. Se eu colocar os metodos get e set direto na actionForm aí funciona, mas eu não queria escrever duas vezes os gets (No bean e no Form)

Será que não pode ser outra coisa?

Obrigado

D

Olá pafuncio,

Deu certo aqui cara… Era exatamente isso mesmo!!

Mais uma vez muito obrigado.

Criado 19 de julho de 2009
Ultima resposta 21 de jul. de 2009
Respostas 3
Participantes 2