Probleminha com Struts

7 respostas
erickles

Olá Pessoal,

To tentando faze uma tela de login com struts, mas tah dificil…simplesmenta a jsp nao abre e surge essa mensagem de erro no navegador:

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: Exception in JSP: /LoginStruts.jsp:10

7:  <body> 
8:   <h1> Login Page </h1> 
9:   <br/> 
10:   <html:form action="/login"> 
11:    User Name : <html:text property="loginName"/> <br/> 
12:    Password : <html:password property="password"/> <br/> 
13:    <html:submit/> 


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
	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)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: Cannot retrieve definition for form bean loginForm on action /login
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.LoginStruts_jsp._jspService(LoginStruts_jsp.java:81)
	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)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.jsp.JspException: Cannot retrieve definition for form bean loginForm on action /login
	org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:767)
	org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443)
	org.apache.jsp.LoginStruts_jsp._jspx_meth_html_form_0(LoginStruts_jsp.java:97)
	org.apache.jsp.LoginStruts_jsp._jspService(LoginStruts_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)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

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

A ActionServlet e a ActionForm tao configurada direitinho, vejam soh meu struts-config.xml:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<html> 
 <head>
  <title>Login Page</title>
 </head> 
 <body> 
  <h1> Login Page </h1> 
  <br/> 
  <html:form action="/login"> 
   User Name : <html:text property="loginName"/> <br/> 
   Password : <html:password property="password"/> <br/> 
   <html:submit/> 
  </html:form>
 </body>
</html>

Sera que podem me ajudar?

7 Respostas

rubinelli

É configuração sim, a mensagem é “Cannot retrieve definition for form bean loginForm on action /login”, então deve estar faltando a declaração de loginForm no seu XML.

erickles

ops, esqueci de posta o .xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
    <form-beans>
        <form-bean name="LoginForm" type="login.LoginForm"/>  
    </form-beans>
    
    <global-exceptions>
    
    </global-exceptions>

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

    <action-mappings>
        <action name="loginForm" path="/login" scope="request" type="login.LoginAction">
        <forward name="success" path="/success.jsp"/> 
                
        </action>
    </action-mappings>
    
    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

    <message-resources parameter="com/myapp/struts/ApplicationResource"/>    
    
    <!-- ========================= Tiles plugin ===============================-->
    
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />      
        <set-property property="moduleAware" value="true" />
    </plug-in>
    
    <!-- ========================= Validator plugin ================================= -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
  
</struts-config>

Declarei no xml o LoginForm…

rubinelli

Eu acho que é case-sensitive. Na action está loginForm, no bean LoginForm.

erickles

Então quer dizer que (repare na paret em negrito):

<form-beans>   
        <form-bean name=[b]"LoginForm"[/b] type="login.LoginForm"/>     
    </form-beans>

Deve ser igual a:

<action name=[b]"loginForm"[/b] path="/login" scope="request" type="login.LoginAction">

?

erickles

Acertei conforme citei nopost anterior, porem ainda dá erro:

exception

org.apache.jasper.JasperException: Exception creating bean of class login.LoginForm: {1}
	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)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: Exception creating bean of class login.LoginForm: {1}
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.LoginStruts_jsp._jspService(LoginStruts_jsp.java:81)
	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)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.jsp.JspException: Exception creating bean of class login.LoginForm: {1}
	org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:487)
	org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:457)
	org.apache.jsp.LoginStruts_jsp._jspx_meth_html_form_0(LoginStruts_jsp.java:97)
	org.apache.jsp.LoginStruts_jsp._jspService(LoginStruts_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)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

Não entendo o motivo, por não estar gerando o bean da classe, poderiam me ajudar?

rubinelli

Pelo menos o erro é diferente. Já é um bom sinal. :slight_smile:

Coisas que podem estar acontecendo:
[list]não existe um LoginForm.class em WEB-INF/classes/login[/list]
[list]LoginForm não tem um construtor público sem argumentos[/list]
[list]o construtor lança uma exceção[/list]

erickles

rubinelli:
Pelo menos o erro é diferente. Já é um bom sinal. :slight_smile:

Coisas que podem estar acontecendo:
[list]não existe um LoginForm.class em WEB-INF/classes/login[/list]
[list]LoginForm não tem um construtor público sem argumentos[/list]
[list]o construtor lança uma exceção[/list]

Consegui !

Na verdade, tinha definido errado no struts-config o pacote do ActionForm e do ActionServlet.

Vlw Rubinelli!

Criado 20 de dezembro de 2008
Ultima resposta 21 de dez. de 2008
Respostas 7
Participantes 2