Erro na construção do formulario

10 respostas
P

Ola pessoal estou tentando construir um formulario com struts só que esta dando o seguinte erro alguem sabe o que pode estar acontecendo de errado

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Cannot retrieve definition for form bean null on action /novocontato

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.ServletException: Cannot retrieve definition for form bean null on action /novocontato

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)

org.apache.jsp.novo_jsp._jspService(novo_jsp.java:80)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.jsp.JspException: Cannot retrieve definition for form bean null on action /novocontato

org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:767)

org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443)

org.apache.jsp.novo_jsp._jspx_meth_html_form_0(novo_jsp.java:148)

org.apache.jsp.novo_jsp._jspx_meth_html_html_0(novo_jsp.java:104)

org.apache.jsp.novo_jsp._jspService(novo_jsp.java:71)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

10 Respostas

L

Tenta colocar isso no jsp

<html:form action="/recrutar/candialterar" focus="nome" onsubmit="return validateCandi(this)">
M

Opa,

você informou no struts-config um form bean para esta action?

:okok:

P

sim informei ta assim

<form-beans>
<form-bean name=“ContatoForm” type=“br.com.paulo.struts.form.ContatoForm” />
</form-beans>

M

mas você não informou nenhuma propriedade e o erro fala ocorreu um erro ao encontra um o form bean vazio…

:okok:

P

valeu vou tentar

P

eu acrescentei propriedades mas não funcionou acrescentei o seguinte codigo no form-bean

<form-beans>

<form-bean name=“ContatoForm” type=“br.com.paulo.struts.form.ContatoForm” />

<form-property name=“contato.nome” type=“java.lang.String”  />

<form-property name=“contato.email” type=“java.lang.String”  />

<form-property name=“contato.endereco” type=“java.lang.String”  />

</form-bean>
M

O erro continua o mesmo? post aí para nós como você está declarando esta action e tudo mais.

:okok:

P

vou colocar todos os arquivos quem sabe vcs encontram algum erro que eu não estou enxergando

#AdicionaContatoAction.java

package br.com.paulo.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.paulo.jdbc.dao.ContatoDao;

import br.com.paulo.jdbc.modelo.Contato;

import br.com.paulo.struts.form.ContatoForm;

public class AdicionaContatoAction extends Action {

@Override
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
	// TODO Auto-generated method stub
	
	ContatoForm formulario = ((ContatoForm)form);
	
	Contato contato = formulario.getContato();
	
	ContatoDao dao = new ContatoDao();
	
	dao.adiciona(contato);
	
	return map.findForward("certo");
}

}

#ContatoForm.java

package br.com.paulo.struts.form;

import org.apache.struts.action.ActionForm;

import br.com.paulo.jdbc.modelo.Contato;

public class ContatoForm extends ActionForm {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private Contato contato = new Contato();

public Contato getContato() {
	return this.contato;
}

}

#novo.jsp

<%@ taglib uri="/tags/struts-html" prefix=“html” %>
<html:html>
<head><title>Sistema de Teste do Struts</title></head>
<html:errors/>
<html:form action="/novocontato" focus=“contato.nome” >
Nome:
<html:text property=“contato.nome”/>
<br/>
Email:
<html:text property=“contato.email”/>
<br/>
Endereço:
<html:text property=“contato.endereco”/>
<br/>
<html:submit>Enviar dados</html:submit>
<br/>
</html:form>
</html:html>

#struts-config.xml

<form-beans>

<form-bean name=“ContatoForm” type=“br.com.paulo.struts.form.ContatoForm” />

<form-property name=“contato.nome” type=“java.lang.String” />

<form-property name=“contato.email” type=“java.lang.String” />

<form-property name=“contato.endereco” type=“java.lang.String” />

</form-bean>
&lt;action path="/listacontato" type="br.com.paulo.struts.action.ListaContato"&gt;
    	&lt;forward name="lista" path="/pages/listacontato.jsp" /&gt;
    	&lt;forward name="listavazia" path="/pages/listavazia.jsp" /&gt;
    &lt;/action&gt;

<action path="/novocontato" type=“br.com.paulo.struts.action.AdicionaContatoAction” >
<forward name=“certo” path="/listacontato.do" />
</action>

M

Opa,

você tem que informar o form na declaração da tua action:

:okok:

S

Beleza cara?

Pelo que vi no seu código você não está usando dynaforms, por isso você não precisa colocar as propriedades do seu form desta forma:

orm-beans&gt;
&lt;form-bean name="ContatoForm" type="br.com.paulo.struts.form.ContatoForm" /&gt;
&lt;form-property name="contato.nome" type="java.lang.String" /&gt;
&lt;form-property name="contato.email" type="java.lang.String" /&gt;
&lt;form-property name="contato.endereco" type="java.lang.String" /&gt;
&lt;/form-bean&gt;

acho que assim vai dar até erro.

pode fazer simplesmente assim

orm-beans&gt;
&lt;form-bean name="ContatoForm" type="br.com.paulo.struts.form.ContatoForm" /&gt;
&lt;/form-bean&gt;

Mas claro que tem que fazer como o marcossousa falou senão nada funciona.
Espero ter ajudado, até mais!

Criado 4 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 10
Participantes 4