Struts causando

17 respostas
A

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

17 Respostas

Pedrosa

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

A

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!

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

A

nada, continua com o mesmo erro!

obrigado

Pedrosa

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

A
<?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…

Pedrosa

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

A

PessoaAction.java

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&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;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");
	}


}
PessoaForm.java
package app;
import org.apache.struts.action.ActionForm;
/*
 * Criado em 02/05/2006
 *
 * Para alterar o gabarito para este arquivo gerado  para
 * Janela&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;Código e Comentários
 */

/**
 * @author andre.fernandes
 *
 * Para alterar o gabarito para este comentário do tipo gerado  para
 * Janela&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;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;
	}

}
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>
falaha.html
<!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
<!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>Sucesso</TITLE>
</HEAD>
<BODY>
	Registrado com sucesso
	<p><a href="cadastro.jsp">cadastrar outro?</a></p>
</BODY>
</HTML>

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

Pedrosa

Acho que é isso:

troque seus campos text

<form:text property="endereco"/>

por

<html:text property="endereco"/>
Pedrosa

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>
A

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!

Pedrosa

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

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

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

Alberto

J

Coloque aí o seu web.xml.

boaglio

Verifique nessa lista de erros/soluções:

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

oliveirarenan

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

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

oliveirarenan

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:

Criado 4 de maio de 2006
Ultima resposta 8 de mai. de 2006
Respostas 17
Participantes 6