Struts erro, no tomcat

16 respostas
cu_ringa

alguem poderia me ajudar, desde o começo da semana q estou pedindo a ajuda de vcs, mas ate agora ninguem se prontificou. To colocando aí a etrutura de diretorios, a jsp, o ActionForm, o struts-config e o erro q esta dando.

webapps
|
|____register
|
|____WEB-INF
|
|___classes
| |___app
|____lib

JSP

<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html" %>

<html:form action="register.do">
	UserName:&lt;html:text property="username" /&gt;<br>
	enter password:&lt;html:password property="password1" /&gt;<br> 
	re-enter password:&lt;html:password property="password2" /&gt;
	&lt;html:submit value="Register" /&gt;
&lt;/html:form&gt;

ActionForm

package app;
import org.apache.struts.action.*;

public class RegisterForm extends ActionForm {
	
	protected String username;
	protected String password1, password2;
	
	public String getUsername(){
		
		return username;
	}
	
	public String getPassword1(){
		
		return password1;
	}
	
	public String getPassword2(){
		
		return password2;
	}
	
	public void setUsername(String username){
		
		this.username = username;		
	}
	
	public void setPassword1(String password1){
		
		this.password1 = password1;		
	}
	
	public void setPassword2(String password2){
		
		this.password2 = password2;		
	}
	
}

struts-config

<?xml version="1.0" encoding="ISO-8859-1" ?>
&lt;!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
              "http://struts.apache.org/dtds/struts-config_1_1.dtd"&gt;

&lt;struts-config&gt;
	&lt;form-beans&gt;
		&lt;form-bean name="registerForm" type="app.RegisterForm" /&gt;
	&lt;/form-beans&gt;
	&lt;action-mappings&gt;
		&lt;action path="/register" type="app.RegisterAction" name="registerForm"&gt;
			&lt;forward name="success" path="/success.html" /&gt;
			&lt;forward name="failure" path="/failure.html" /&gt;
		&lt;/action&gt;
	&lt;/action-mappings&gt;
&lt;/struts-config&gt;

erro

exception 

javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
	org.apache.jsp.register_jsp._jspService(org.apache.jsp.register_jsp:76)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
	org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:711)
	org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:419)
	org.apache.jsp.register_jsp._jspx_meth_html_form_0(org.apache.jsp.register_jsp:92)
	org.apache.jsp.register_jsp._jspService(org.apache.jsp.register_jsp:69)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

16 Respostas

rodrigo_gomes

o seu diretorio classes esta dentro de webapps?

pelo que ta escrito parece que sim, se tiver mesmo ele deve ficar em

webapps/WEB-INF /classes

assim como o diretorio lib

onde vc colocou seu arquivo struts-config.xml?

cu_ringa

classes e lib estao dentro de WEB-INF, e o arquivo struts-config.xml tambem esta dentro de WEB-INF.

esse exemplo q estou usando e do livro Struts em ação( cap. 1 ), so q n to conseguindo rodar. me ajudem.

Diogenes

Seu web.xml está com o mapeamento do servlet de processamento das actions (*.do) configurado corretamente?
O atributo load-on-startup do ActionServlet está setado?

cu_ringa

eu acho q o problema esta no web.xml, olha aí o q fiz e diga aí o q ta errado.

&lt;web-app&gt;
	
	&lt;servlet&gt;
    &lt;servlet-name&gt;action&lt;/servlet-name&gt;
	  &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;
	  
	  &lt;init-param&gt;
	     &lt;param-name&gt;config&lt;/param-name&gt;
	     &lt;param-value&gt;WEB-INF/struts-config.xml&lt;/param-value&gt;
	  &lt;/init-param&gt;
	&lt;/servlet&gt;

	&lt;servlet-mapping&gt;
  	&lt;servlet-name&gt;action&lt;/servlet-name&gt;
  	&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;
				
&lt;/web-app&gt;

foi um cara q mandou p mim, mas n entendi p q esse init-param???

rodrigo_gomes

ola,

tente colocar no web.xml assim pra ver se funciona

&lt;servlet&gt; &lt;servlet-name&gt;action&lt;/servlet-name&gt; &lt;servlet-class&gt; org.apache.struts.action.ActionServlet &lt;/servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;config&lt;/param-name&gt; &lt;param-value&gt; /WEB-INF/struts-config.xml &lt;/param-value&gt; &lt;/init-param&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt;

Diogenes

curinga,

O atributo load-on-startup do teu servlet não foi setado, isso impede que ele consiga processar a requisição corretamente…

Conforme o rodrigo lhe passou tente, seta-lo para 1:

<servlet>
   ...
   
    <load-on-startup>1</load-on-startup>
  </servlet>
cu_ringa

ei rodrigo, coloquei o web.xml, igualzinho como vc falou, mas ta dando o mesmo erro. E agora o q faço?

Diogenes

Como está seu web.xml?

cu_ringa
eu coloquei o web.xml, da aplicação padrão do struts
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
  <display-name>Struts Blank Application</display-name>
  
  <!-- Standard Action Servlet Configuration (with debugging) -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>


  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>


  <!-- The Usual Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>


  <!-- Struts Tag Library Descriptors -->
  <taglib>
    <taglib-uri>/tags/struts-bean</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-html</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-logic</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-nested</taglib-uri>
    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/tags/struts-tiles</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
  </taglib>

</web-app>

e quando eu estou inicializando o tomcat, ta dizendo q ta dando erro ao inicializar o ActionServlet.

vc n tem uma aplicação básica, q vc possa me dar com os arquivos configurados só p mim fazer um teste, pois já tou triste de tanto tentar e n conseguir. Desde da semana retrasada q tou lutando p rodar a 1ª aplicação do livro struts em ação, mas ta dificil.

Diogenes

Já tentou utilizar a estrutura do struts-blank ???

R

E aí cu_ringa, blz? Comprei o mesmo livro estou tendo o mesmo problema. Vc consegiu resolver?

Att,

Ricardo

cu_ringa

o problema era o seguinte, no livro n fala q a pessoa tem q colocar isso no arquivo application.properties, agora vai dar certo. E se lembre q tem que colocar os diretorios tb, tipo WEB-INFclasses/resources/application.properties
no struts-config vc coloca assim. acho q vai resolver seu problema.

&lt;message-resources parameter="resources.application" /&gt;
# Errors
errors.footer=
errors.header=&lt;h3&gt;<font color="red">Erro de Validação</font>&lt;/h3&gt;You must correct the following error(s) before proceeding:
errors.ioException=I/O exception rendering error messages: {0}
error.database.missing=<li>User database is missing, cannot validate logon credentials</li>
errors.required={0} é obrigatório.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} é invalido.

errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.

errors.date={0} is not a date.

errors.range={0} is not in the range {1} through {2}.

errors.creditcard={0} is not a valid credit card number.

errors.email={0} is an invalid e-mail address.
R

Foi não…
Segue o erro. Tem + alguma dica?

Att,

type Exception report

message

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

exception

org.apache.jasper.JasperException

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

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

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

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

root cause

java.lang.NullPointerException

org.apache.struts.taglib.tiles.InsertTag.processAttribute(InsertTag.java:689)

org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:489)

org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:451)

org.apache.jsp.index_jsp._jspx_meth_tiles_insert_0(index_jsp.java:94)

org.apache.jsp.index_jsp._jspService(index_jsp.java:65)

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

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

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

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

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

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

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

cu_ringa

O meu Struts quando tava aparecendo esse problema foi só adicionar, aquelas linhas ao application.properties. Agora esse erro aí eu nunca vi, mas como fala de Jasper pode ser algum erro no seu jsp.

exception 
 
 javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
 	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
 	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
 	org.apache.jsp.register_jsp._jspService(org.apache.jsp.register_jsp:76)
 	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
 	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
 	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 
 
 root cause 
 
 javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
 	org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:711)
 	org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:419)
 	org.apache.jsp.register_jsp._jspx_meth_html_form_0(org.apache.jsp.register_jsp:92)
 	org.apache.jsp.register_jsp._jspService(org.apache.jsp.register_jsp:69)
 	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
 	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
 	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Diogenes

java.lang.NullPointerException org.apache.struts.taglib.tiles.InsertTag.processAttribute(InsertTag.java:689) ...
Pelo visto, vc pode estar utilizando alguma taglib com algum atributo vazio…Ou usando a tag display sem especificar o atributo requestURI

C

Salve, salve encontrei o temível xabu… por favor quem puder explicar o que significa esta tag xml do web.xml, e os valores que são passados (1,2,3) ficarei muito grato!

1

Criado 18 de fevereiro de 2005
Ultima resposta 26 de jul. de 2006
Respostas 16
Participantes 5