Struts - Cannot retrieve definition for form bean null

1 resposta
M

Estou tentando criar um jsp que tem uma combo preenchida por uma Action. Ao Executar ocorre o erro “javax.servlet.ServletException: Cannot retrieve definition for form bean null on action confirmaModelos”.

Alguém como resolver ? Obrigado.

Seguem os arquivos abaixo:

JSP:

<%@ page language=“java” %>
<!-- Tag Libraries disponíveis para a página -->
<%@ taglib prefix=“html” uri="/WEB-INF/struts-html.tld" %>
<!-- Cria forms -->
<html:form action=“confirmaModelos” focus=“CD_MODELO”>
<html:select property=“CD_MODELO”>
<html:options collection=“MODELOS” property=“CD_MODELO” labelProperty=“DS_MODELO”/>
</html:select>
</html:form>

struts-config.xml:

<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE struts-config PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 1.1//EN” “http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd”>
<struts-config>
<!-- Define os form-beans utilizados pela aplicação -->
<form-beans>
<form-bean name="/confirmaModelos" type=“intranet.action.SelecionaModelosAction”/>
</form-beans>
<global-forwards>
<forward name=“selecionaModelos” path="/selecionaModelos.do"/>
<forward name=“failure” path="/pages/error.jsp"/>
</global-forwards>
<!-- Mapeamentos para cada action -->
<action-mappings>
<action path="/selecionaModelos" type=“intranet.action.SelecionaModelosAction” input="/pages/failure.jsp">
<forward name=“sucesso” path="/pages/selecionaModelos.jsp" contextRelative=“false” redirect=“false”/>
</action>
</action-mappings>
<!-- Configura arquivo de internacionalização -->
<message-resources parameter=“resources.ApplicationResources” key=“org.apache.struts.action.MESSAGE”/>
</struts-config>

1 Resposta

J

nussaaa!!!
que lambança!! :wink:

Vamos la então:

A action do seu form é o nome da action declarada no Struts config dentro de <action-mappings>. Ficaria assim então sua JSP:

&lt;html&#58;form action="/SelecionaModelos.do"&gt; 
&lt;html&#58;select property="CD_MODELO"&gt; 
&lt;html&#58;options collection="MODELOS" property="CD_MODELO" labelProperty="DS_MODELO"/&gt; 
&lt;/html&#58;select&gt; 
&lt;/html&#58;form&gt;

Dentro desta Tag, vai um Form, e não uma Action. Vc criou um form herdando de ActionForm? É essa classe (que vc criou ou vai criar) que vc declara dentro de “type”!

&lt;form-beans&gt; 
	&lt;form-bean name="confirmaModelos" type="meu.pacote.MeuForm"/&gt; 
&lt;/form-beans&gt;

Na action que vc cria, vc referencia que ela terá um Form apartir do atributo “name” (abaixo). Repare que o form que vc coloca em name, tem o mesmo nome que vc deu la em cima quando declarou o form!

&lt;action-mappings&gt; 
  &lt;action path="/SelecionaModelos" 
	  type="intranet.action.SelecionaModelosAction" 
	  input="/pages/failure.jsp"
	  name="confirmaModelos"&gt; 
     &lt;forward name="sucesso" path="/pages/selecionaModelos.jsp" contextRelative="false" redirect="false"/&gt; 
  &lt;/action&gt; 
&lt;/action-mappings&gt;

Cara, acho que vc deveria dar mais uma lidinha sobre o que é o Struts e como ele funciona.
Aqui no PJ tem alguns tutorias sobre isso, outras referencias podem ser encontradas no próprio site:
http://struts.apache.org

abraços!

Criado 11 de maio de 2005
Ultima resposta 11 de mai. de 2005
Respostas 1
Participantes 2