Struts causando

Bom dia a todos…

sou novo no struts, e to com problemas muitos dificeis(pra mim) de resolver…

to fazendo um projeto de cadastro de Pessoa…

acontece que quando eu rodo ele, ele nem abre o jsp principanl, e da esse erro aqui…

HTTP Status 500 -


type Exception report

message

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

exception

javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.cadastro_jsp._jspService(cadastro_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
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:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

root cause

javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:798)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
org.apache.jsp.cadastro_jsp._jspx_meth_form_form_0(cadastro_jsp.java:91)
org.apache.jsp.cadastro_jsp._jspService(cadastro_jsp.java:66)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
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:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

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


Apache Tomcat/5.0.30

Obrigado

Parece problemas com taglib do Struts, sua aplicação tem o diretorio tld dentro de WEB-INF com as taglibs do Struts?

dentro do WEB-INF tem :

pasta classes
pasta lib
arquivos:
.cvsignore
ibm-web-bnd.xmi
ibm-web-ext-xmi
struts-bean.tld
struts-config.xml
struts-html.tld
struts-logic.tld
struts-nested.tld
struts-template.tld
struts-tiles.tld
web.xml
cadastro.jsp
falha.html
sucesso.html
.classoath
.project
.server
.websettings
.website-config
diagram.gph

é isso ai só…

por favor, nao acho o problema, preciso de ajuda!

Esses arquivos:


struts-bean.tld 
struts-html.tld 
struts-logic.tld 
struts-nested.tld 
struts-template.tld 
struts-tiles.tld 

precisam ficar dentro de uma pasta tld, tenta fazer isso

nada, continua com o mesmo erro!

obrigado

De uma olhada no seu struts-config.xml, confira se os nomes estão corretos post ele aqui.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Origens de Dados -->
<data-sources>
</data-sources>

<!-- Beans de Formulário -->
<form-beans>
	<form-bean name="PessoaForm" type="app.PessoaForm"/>
</form-beans>

<!-- Exceções Globais -->
<global-exceptions>
</global-exceptions>

<!-- Avanços Globais -->
<global-forwards>
</global-forwards>

<!-- Mapeamentos de Ações -->
<action-mappings>
	<action path="/Pessoa"
	type="app.PessoaAction"
	name="PessoaAction">
	<forward name="success" path="/sucesso.html"/>
	<forward name="failure" path="/falha.html"/>
</action>	
</action-mappings>

<!-- Recursos da Mensagem -->
<message-resources parameter="br.com.pessoa1.resources.ApplicationResources"/>

é esse ai o struts-config, não sou um bom conhecedor de struts, mas acho q ele ta correto…

Post suas classes e o JSP aqui, utilize a tag Code seu código fica mais facil de entender.

PessoaAction.java

[code]package app;

import java.io.IOException;

import javax.servlet.ServletException;
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;
/**

  • @author andre.fernandes

  • Para alterar o gabarito para este comentário do tipo gerado vá para

  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */
    public class PessoaAction extends Action {
    public ActionForward perform (ActionMapping mapping,
    ActionForm form,
    HttpServletRequest req,
    HttpServletResponse res)throws IOException, ServletException{

    PessoaForm pf = (PessoaForm) form;

    String nome = pf.getNome();
    String endereco = pf.getEndereco();
    String complemento = pf.getComplemento();
    String cep = pf.getCep();
    String rg = pf.getRg();
    String telefone = pf.getTelefone();
    String email = pf.getEmail();
    String observacoes = pf.getObservacoes();
    if(nome != null){
    try{
    return mapping.findForward(“success”);
    }catch(Exception e){
    return mapping.findForward(“failure”);
    }
    }
    return mapping.findForward(“failure”);
    }

}[/code]

PessoaForm.java

[code]package app;
import org.apache.struts.action.ActionForm;
/*

  • Criado em 02/05/2006
  • Para alterar o gabarito para este arquivo gerado vá para
  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */

/**

  • @author andre.fernandes

  • Para alterar o gabarito para este comentário do tipo gerado vá para

  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    /
    public class PessoaForm extends ActionForm{
    protected String nome;
    protected String endereco;
    protected String complemento;
    protected String cep;
    protected String rg;
    protected String telefone;
    protected String email;
    protected String observacoes;
    /
    *

    • @return
      */
      public String getCep() {
      return this.cep;
      }

    /**

    • @return
      */
      public String getComplemento() {
      return this.complemento;
      }

    /**

    • @return
      */
      public String getEmail() {
      return this.email;
      }

    /**

    • @return
      */
      public String getEndereco() {
      return this.endereco;
      }

    /**

    • @return
      */
      public String getNome() {
      return this.nome;
      }

    /**

    • @return
      */
      public String getObservacoes() {
      return this.observacoes;
      }

    /**

    • @return
      */
      public String getRg() {
      return this.rg;
      }

    /**

    • @return
      */
      public String getTelefone() {
      return this.telefone;
      }

    /**

    • @param string
      */
      public void setCep(String cep) {
      this.cep = cep;
      }

    /**

    • @param string
      */
      public void setComplemento(String complemento) {
      this.complemento = complemento;
      }

    /**

    • @param string
      */
      public void setEmail(String email) {
      this.email = email;
      }

    /**

    • @param string
      */
      public void setEndereco(String endereco) {
      this.endereco = endereco;
      }

    /**

    • @param string
      */
      public void setNome(String nome) {
      this.nome = nome;
      }

    /**

    • @param string
      */
      public void setObservacoes(String observacoes) {
      this.observacoes = observacoes;
      }

    /**

    • @param string
      */
      public void setRg(String rg) {
      this.rg = rg;
      }

    /**

    • @param string
      */
      public void setTelefone(String telefone) {
      this.telefone = telefone;
      }

}[/code]

cadastro.jsp

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

<form:form action="Pessoa.do">
Efetue aqui o seu cadastro:
<table>
<tr>
<td>Nome:</td>
<td><form:text property="nome" /></td>
</tr>
<tr>
<td>Endereço:</td>
<td><form:text property="endereco"/></td>
</tr>
<tr>
<td>Complemento:</td>
<td><form:text property="complemento"/></td>
</tr>
<tr>
<td>Cep:</td>
<td><form:text property="cep"/></td>
</tr>
<tr>
<td>RG:</td>
<td><form:text property="rg"/></td>
</tr>
<tr>
<td>Telefone:</td>
<td><form:text property="telefone"/></td>
</tr>
<tr>
<td>E-Mail:</td>
<td><form:text property="email"/></td>
</tr>
<tr>
<td>Observações:</td>
<td><form:text property="observacoes"/></td>
</tr>
<tr>
<td><form:submit value="Cadastrar"/></td>
</form:form>
</tr>[/code]

falaha.html
[code]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="IBM WebSphere Studio">
<META http-equiv="Content-Style-Type" content="text/css">
<LINK href="theme/Master.css" rel="stylesheet" type="text/css">
<TITLE>Falha</TITLE>
</HEAD>
<BODY>
	Falhou
	<P><a href="cadastro.jsp">tentar de novo?</a></P>
</BODY>
</HTML>

sucesso.html

[code]

Sucesso Registrado com sucesso

cadastrar outro?

[/code]

cadastro.jsp, falha.html e sucesso.html esta na pasta WebContent
os dois .java estao em Recursos Java, pacote “app”

Acho que é isso:

troque seus campos text

<form:text property="endereco"/>

por

<html:text property="endereco"/>

Olhe esse exemplo:

<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%>
<html:html>
	<html:form action="/login" focus="usuario">	
		
	<table align="center">
		<tr>
			<td colspan="2" align="center">Sistema de Acesso</td>
		</tr>
		<tr>
			<td><bean:message key="pergunta.usuario"/></td>
			<td><html:text property="usuario"/></td
		</tr>
		<tr>
			<td><bean:message key="pergunta.senha"/></td>
			<td><html:password property="senha"/></td>
		</tr>
			<td>
				<html:submit>
					<bean:message key="pergunta.enviar"/>
				</html:submit>
			</td>
			<td>
				<html:reset>
					<bean:message key="pergunta.limpar"/>
				</html:reset>
			</td>	
		</tr>
	</table>
	</html:form>
</html:html>

alterando ai, ele diz que a marcação é desconhecida…

engraçado, é que em outro exemplo ele faz o seguinte:

<@ taglib uri="WEB-INF/struts-form.tld" prefiz="form" %>

mas no meu wsad não existe nenhum struts-form.tld… achei isso muito estranho!

Essas taglibs do struts são muito ruins, teste com html normal então, caso precise mescle com jstl.

<form>
   <input type="text">
    ...
</form>

<action path="/Pessoa"
type=“app.PessoaAction”
name=“PessoaAction”>
Faz assim:
<action path="/Pessoa"
type=“app.PessoaAction”
name=“PessoaForm”>

Alberto

Coloque aí o seu web.xml.

Verifique nessa lista de erros/soluções:

http://www.geocities.com/Colosseum/Field/7217/SW/struts/errors.html

[quote=Pedrosa]Esses arquivos:


struts-bean.tld 
struts-html.tld 
struts-logic.tld 
struts-nested.tld 
struts-template.tld 
struts-tiles.tld 

precisam ficar dentro de uma pasta tld, tenta fazer isso[/quote]

Não necessáriamente… :lol: :lol: :lol: :lol: :lol:

Se vc quiser que o cara coloque o projeto inteiro aqui, manda um e-mail e pede o projeto dele…mas postar código por código aqui fica mto porco… :lol: :lol: :lol: :lol: :lol: