Problemas com Struts

2 respostas
hiroc

bem pessoal, tentarei descrever aqui meu problema, se puderem me ajudar

ao rodar minha aplicação aparece a seguinte exceção:

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

minha aplicação é simples, só para aprendizado mesmo...e é a seguinte:

tenho um struts-config.xml dessa forma:

<global-forwards>
        <forward name="welcome"  path="/Welcome.do"/>
        
        <forward name="logon" path="/Logon.do"/>
    </global-forwards>

    <action-mappings>
        <action path="/Welcome" type="com.HelloWorld">
            <forward name="sucesso" path="def.welcome" />
        </action>
        
        <action path="/Logon" type="com.HelloWorld" >
            <forward name="sucesso" path="def.logon" />
        </action>
        
        <action path="/LogonSubmit" type="com.LogonAction">
            <forward name="sucesso" path="def.confirmation" />
        </action>
        
    </action-mappings>

esse HelloWorld é só um simples action que retorna em todos os casos um "sucesso", através do
return mapping.findForward("sucesso");

o LogonAction também faz a mesma coisa, apenas retorna "sucesso" e mais nada.

o tiles-defs.xml está desta forma:

<definition name="def.welcome" path="/welcomeStruts.jsp"></definition>
    <definition name="def.logon" path="/logon.jsp"></definition>
    <definition name="def.confirmation" path="/confirmation.jsp"></definition>
A index.jsp é apenas uma página que oferece o link para entrar no logon.jsp dessa forma:
<html:link forward="logon">Sign in</html:link>

se eu entendi bem, esse forward logon está definido no global-forwards, que chama o Logon.do, que está definido no action-mappings, que chama o HelloWorld, que retorna sucesso e vai para o def.logon, que chama o logon.jsp:

<html:form action="/LogonSubmit.do" focus="username">
<TABLE border="0" width="100%">
<TR>
<TH align="right">Username:</TH>
<TD align="left"><html:text property="username"/></TD>
</TR>
<TR>
<TH align="right">Password:</TH>
<TD align="left"><html:password property="password"/></TD>
</TR>
<TR>
<TD align="right"><html:submit/></TD>
<TD align="left"><html:reset/></TD>
</TR>
</TABLE>
</html:form>

e confirmation.jsp é apenas uma html simples falando que o usuario está logado.

Mas ao clicar nesse link inicial (na index, chamando o logon) é que essa exceção aparece. O que estou fazendo de errado?

Se puderem me ajudar agradeço! Imagino que deva ser uma coisa bem simples, problema talvez com definições de como funciona o Struts. Mas já quebrei a cabeça aqui e não consegui identificar o erro.
Valew!

2 Respostas

giovaniufop

kara acho q vc esqueceu de definir seu form-bean no arquivo strutus-config.xml

Vamos supor que a classe que representa seu ActionForm esteja em meupacote.UserNameForm

vc define da seguinte maneira

<form-beans>
	<!-- definindo a classe que representa o formulario - ActionForm-->
	<form-bean name="username"   type="meupacote.UserNameForm">
       </form-bean>
<form-beans>

entendeu?

rod

Voce tambem pode dar uma olhada em DynaActionForm, assim vc nao precisa criar a sua classe ActionForm.

http://struts.apache.org/1.3.8/userGuide/building_controller.html#dyna_action_form_classes

Criado 20 de junho de 2008
Ultima resposta 20 de jun. de 2008
Respostas 2
Participantes 3