Struts

2 respostas
ilidiopaulo

Olá, estou fazendo uma aplicação para aprender como trabalhar com o struts 1.3, eu já fiz todas as configurações necessárias, todas as telas já estão sendo chamadas normalmente.
O Struts-config.xml já está configurado de forma correta.
a minha actionform tem o atributo endereço, na minha classe pojo também tem este mesmo atributo.
Segundo o que eu entendi ele não encontrou o bean endereço no meu action form, veja o código abaixo.

private String endereco;


	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

Na minha jsp temos o código

<%@ page contentType="text/html; charset=Cp1252" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-nested" prefix="nested" %>

<%@ page import="br.com.sisae.pojo.Cliente" %>
<jsp:useBean id="cliente" class="br.com.sisae.pojo.Cliente"	scope="session" />

<html:html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
		<title></title>
	</head>
	<body>
		<html:form action="cliente">
		<table>
            <tr>
            
                <td align="left" colspan="15%">
                    CLIENTE:
                </td>
                <td>
                    <html:text name="cliente" property="cliente" value="<%=cliente.getCliente()%>" size="35%"/>
                </td>
                
                <td align="left" colspan="15%">
                    ENDERECO:
                </td>
                <td>
                    <html:text name="endereco" property="endereco" value="<%=cliente.getEndereco()%>" size="35%"></html:text>
                </td>
                
                <td align="left" colspan="20">
                    DDD:
                </td>
                <td>
                    <input type="text" name="ddd" value="<%= cliente.getDdd()%>" size="50"/>
                </td>
                
                <td align="left" colspan="20">
                    TELEFONE:
                </td>
                <td>
                    <input type="text" name="telefone" value="<%=cliente.getTelefone()%>">
                </td>
                
                <td align="left" colspan="20">
                    CPFCGC:
                </td>
                <td>
                    <input type="text" name="cpfcgc" value="<%= cliente.getCgcCpf()%>" size="50"/>
                </td>
                
                <td align="left" colspan="20">
                    UF:
                </td>
                <td>
                    <html:text name="uf" property="uf" value="<%= cliente.getUf()%>" size="50"/>
                </td>
                
                <td align="left" colspan="20">
                    CIDADE:
                </td>
                <td>
                    <html:text name="cidade" property="cidade" value="<%= cliente.getCidade()%>" size="50"/>
                </td>
                
                <td align="left" colspan="20">
                    BAIRRO:
                </td>
                <td>
                    <html:text name="bairro" property="bairro" value="<%= cliente.getBairro()%>" size="50"/>
                </td>
                
                <td align="left" colspan="20">
                    CEP:
                </td>
                <td>
                    <input type="text" name="cep" value="<%= cliente.getCep()%>" size="50"/>
                </td>
                
            </tr>
        </table>
		</html:form>
	</body>
</html:html>

acontece que todas as vezes que eu mando chamar a tela responsável pelo formulário ele me retorna o seguinte erro.

javax.servlet.jsp.JspException: Cannot find bean: "endereco" in any scope
	at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:864)
	at org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:123)
	at org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
	at org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80)
	at org.apache.jsp.cliente_jsp._jspService(cliente_jsp.java:159)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1078)
	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:295)
	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:396)
	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:347)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)

Aceito sugestões e críticas

2 Respostas

AndreAlves

Cara, eu trabalho com o Struts 1.1 e acho que não precisa colocar o value="<%=cliente.getCliente()%>"
O Struts obtém o valor do campo automaticamente pelo ActionForm.

Mas isso não tem nenhuma relação com o seu problema (eu acho).
Posta o teu struts-config.xml pra gente dar uma olhada.

Eu já tive problemas semelhantes, e normalmente o problema era o nome do Action ser diferente do valor da propriedade action do html:form.
Tenta mudar a linha:

para

Se você colocou o Action em um determinado caminho, coloca o caminho completo.

ilidiopaulo

estou mandando o meu Struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
  <data-sources>
  </data-sources>
  <form-beans>
    <form-bean name="indexForm" type="br.com.sisae.form.IndexForm"/>
    <form-bean name="clienteForm" type="br.com.sisae.form.ClienteForm"/>
    <form-bean name="funcionarioForm" type="br.com.sisae.form.FuncionarioForm"/>
    <form-bean name="identificacaoForm" type="br.com.sisae.form.IdentificacaoForm"/>
    <form-bean name="menuForm" type="br.com.sisae.form.MenuForm"/>
    <form-bean name="produtoForm" type="br.com.sisae.form.ProdutoForm"/>
    <form-bean name="senhasForm" type="br.com.sisae.form.SenhasForm"/>
    <form-bean name="tabelasSistemaForm" type="br.com.sisae.form.TabelasSistemaForm"/>
    <form-bean name="transportadoraForm" type="br.com.sisae.form.TransportadoraForm"/>
    <form-bean name="valesForm" type="br.com.sisae.form.ValesForm"/>
    <form-bean name="telaSistemaForm" type="br.com.sisae.form.TelaSistemaForm"/>
    <form-bean name="menuPrincipalForm" type="br.com.sisae.form.MenuPrincipalForm"/>
  </form-beans>
  <global-exceptions>
  </global-exceptions>
  <global-forwards>
  </global-forwards>
  <action-mappings>
    <action path="/index" name="indexForm" type="br.com.sisae.action.IndexAction" scope="request" input="/index.jsp">
      <forward name="sucesso" path="/identificacao.jsp"/>
    </action>
    <action path="/cliente" name="clienteForm" type="br.com.sisae.action.ClienteAction" scope="request" validate="true" input="/cliente.jsp" parameter="metodo">
      <forward name="sucesso" path="/cliente.jsp"/>
    </action>
    <action path="/funcionario" name="funcionarioForm" type="br.com.sisae.action.FuncionarioAction" scope="request" validate="true" input="/funcionario.jsp" parameter="metodo">
      <forward name="sucesso" path="/funcionario.jsp"/>
    </action>
    <action path="/identificacao" name="identificacaoForm" type="br.com.sisae.action.IdentificacaoAction" scope="request" validate="true" input="/identificacao.jsp" parameter="metodo">
      <forward name="sucesso" path="/menu.jsp"/>
      <forward name="falha" path="/menu.jsp"/>
    </action>
    <action path="/menu" name="menuForm" type="br.com.sisae.action.MenuAction" scope="request" validate="true" input="/menu.jsp" parameter="metodo">
      <forward name="sucesso" path="/menu.jsp"/>
    </action>
    <!-- <forward name="sucesso" path="/produto.jsp"/>  <forward name="sucesso" path="/senha.jsp"/>  <forward name="sucesso" path="/tabelasistema.jsp"/>  <forward name="sucesso" path="/transportadora.jsp"/>  <forward name="sucesso" path="/funcionario.jsp"/>  <forward name="sucesso" path="/vales.jsp"/>  <forward name="sucesso" path="/cliente.jsp"/> -->
    <action path="/produto" name="produtoForm" type="br.com.sisae.action.ProdutoAction" scope="request" validate="true" input="/produto.jsp" parameter="metodo">
      <forward name="sucesso" path="/produto.jsp"/>
    </action>
    <action path="/senha" name="senhasForm" type="br.com.sisae.action.SenhasAction" scope="request" validate="true" input="/senha.jsp" parameter="metodo">
      <forward name="sucesso" path="/senha.jsp"/>
    </action>
    <action path="/tabelassistema" name="tabelasSistemaForm" type="br.com.sisae.action.TabelasSistemaAction" scope="request" validate="true" input="/tabelassistema.jsp" parameter="metodo">
      <forward name="sucesso" path="/tabelassistema.jsp"/>
    </action>
    <action path="/transportadora" name="transportadoraForm" type="br.com.sisae.action.TransportadoraAction" scope="request" validate="true" input="/transportadora.jsp" parameter="metodo">
      <forward name="sucesso" path="/transportadora.jsp"/>
    </action>
    <action path="/vale" name="valesForm" type="br.com.sisae.action.ValesAction" scope="request" validate="true" input="/vales.jsp" parameter="metodo">
      <forward name="sucesso" path="/vales.jsp"/>
    </action>
  </action-mappings>
  <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
  <message-resources parameter="MessageResources"/>
  <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>
  <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>
Criado 24 de abril de 2009
Ultima resposta 24 de abr. de 2009
Respostas 2
Participantes 2