Julio estou lendo o Mastering Jakarta Struts. Se vc for na pagina 147 (154 of 262), ver� q n�o � necess�rio isso. Ontem mesmo, eu tinha fechado o dia com um path /Login se comunicando com um path /ClienteLista. Ele estava montado, bonitinho, com o iterate, a lista dos clientes. S� que hoje comecei a expandir a aplicacao adicionando as funcionalidades de edicao, cadastro, dele��o. Ai � q deu pau. Simplesmente o esta pagina q tem o iterate nao funciona mais. � como se a alteracao no descritor de implantacao do struts se perdesse. Ele esta carregando primeiro a pagina e depois chamando a Action. O corretor � o contrario.
----- Original Message -----
Sent: Wednesday, December 10, 2003 6:11 PM
Subject: RES: [cejug-discussao] Struts, um probleminha

Jairo,

 

Voc� tem que colocar o objeto na requisi��o(sess�o, aplica��o, etc) para ele pegar na p�gina. O seu action est� com o objeto, mas como � que ele vai saber que vari�veis ele deve passar para a p�gina? request.setAttribute(...) (voc� tem de informar!), se voc� n�o fizer isso a p�gina n�o tem conhecimento dele... O que o findForward faz, � s� repassar a requisi��o para o path especificado(no caso, �list�) e nada mais.

 

Julio Cesar

 

 

-----Mensagem original-----
De: Jairo Soares [mailto:[EMAIL PROTECTED]
Enviada em: quarta-feira, 10 de dezembro de 2003 17:29
Para: [EMAIL PROTECTED]org
Assunto: Re: [cejug-discussao] Struts, um probleminha

 

Oi Julio, obrigado por responder. Mas olha s�: a Action listada abaixo (item 3) n�o passaria(forwarded) o objeto l� instanciado( no caso o   ArrayList clientes = new ArrayList(); ), com o comando: return (mapping.findForward(target)) (que est� na Actin em questao)  para a JSP em questao (item 2). N�o � estas uma das vantagens de adota esse framework (Struts) ?

----- Original Message -----

Sent: Wednesday, December 10, 2003 5:13 PM

Subject: RES: [cejug-discussao] Struts, um probleminha

 

Jairo,

 

Na p�gina n�o existe o objeto �clientes�... se vc  utilizar a tag <logic:present..> para testar se existe o objeto vai ver que ele mostra(salta o corpo da tag) que o objeto �clientes� n�o existe. Voc� tem de colocar na p�gina com request.setAttribute(�nomes�, ..).....

 

 

 

Julio Cesar

 

-----Mensagem original-----
De: Jairo Soares [mailto:[EMAIL PROTECTED]
Enviada em: quarta-feira, 10 de dezembro de 2003 16:56
Para: [EMAIL PROTECTED]org
Assunto: [cejug-discussao] Struts, um probleminha

 

Algu�m poderia me ajudar ?

Obs: SE EU TIRAR A PARTE DO CODIGO DA JSP Q TEM O <logic:iterate , D� CERTO !!!!

1) Tenho a seguinte mensagem de erro:

 

org.apache.jasper.JasperException: Cannot find bean clientes in any scope
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
 at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
 at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValvejava:256)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValvejava:191)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2409)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
 at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
 at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
 at java.lang.Thread.run(Thread.java:536)

 

2) Minha jsp

 

<%@ taglib uri="/WEB-INF/tlds/struts-html.tld"  prefix="html"%>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld"  prefix="bean"%>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld"  prefix="logic"%>
<logic:notPresent name="USER">
 <logic:forward name="login" />
</logic:notPresent>
<html>
 <head>
  <title><bean:message key="app.cliente.titulo" /></title>
 </head>
 <body>
 <center>

 <html:errors />
 
 <table width="90%" border="0" cellspacing="0" cellpadding="0" >

 

  <logic:iterate id="cliente" name="clientes">
   <tr align="left">
    <td><font face=arial size=-1>
     <a href=""cliente" property="codigo" />"><bean:write name="cliente" property="nome" /></a>
     </font>
    </td>
    <td><font face=arial size=-1>
     <bean:write name="cliente" property="codigo" />
     </font>
    </td>
    <td><font face=arial size=-1>
     <bean:write name="cliente" property="endereco" />
     </font>
    </td>
    <td><font face=arial size=-1>
     <bean:write name="cliente" property="fone" />
     </font>
    </td>
   </tr>
  </logic:iterate>

 

 </table>
 </center>
 </body>
</html>

 

3) Minha Action que monta a lista dos clientes

 

package br.com.unilet.actions.cliente;

 

import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

 

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

 

public class ClienteListAction extends Action {
 protected ArrayList getEmployees() {
  Cliente cliente = null;
  ArrayList clientes = new ArrayList();
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  ServletContext context = servlet.getServletContext();
  DataSource dataSource = (DataSource) context.getAttribute(Action.DATA_SOURCE_KEY);
  try {
   conn = dataSource.getConnection();
   stmt = conn.createStatement();
   rs = stmt.executeQuery("select * from cliente ");
   while (rs.next()) {
    cliente = new Cliente();
    cliente.setCodigo(new Integer(rs.getInt("codigo")));
    cliente.setNome(rs.getString("nome"));
    cliente.setEndereco(rsgetString("endereco"));
    cliente.setUf(rs.getString("uf"));
    cliente.setFone(rs.getString("fone"));
    cliente.setSexo(rs.getString("sexo"));
    clientes.add(cliente);
    System.err.println("Cliente : " + cliente.getNome());
   }
  } catch (SQLException e) {
   System.err.println(e.getMessage());
  } finally {
   if (rs != null) {
    try {
     rs.close();
    } catch (SQLException sqle) {
     System.err.println(sqle.getMessage());
    }
    rs = null;
   }
   if (stmt != null) {
    try {
     stmt.close();
    } catch (SQLException sqle) {
     System.err.println(sqle.getMessage());
    }
    stmt = null;
   }
   if (conn != null) {
    try {
     conn.close();
    } catch (SQLException sqle) {
     System.err.println(sqle.getMessage());
    }
    conn = null;
   }
  }
  return clientes;
 }

 

 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response)
  throws IOException, ServletException {
  String target = "list";
  ArrayList clientes = getEmployees();
  return (mapping.findForward(target));
 }
}

 

4) Meu struts-config.xml

 

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

 

<struts-config>
    <data-sources>
     <data-source>
      <set-property property="driverClass" value="oracle.jdbc.driver.OracleDriver" />
      <set-property property="url" value="jdbc:oracle:thin:@172.17.17.120:1521:orcl" />
      <set-property property="user" value="labweb" />
      <set-property property="password" value="lab" />
     </data-source>
    </data-sources>

 

    <form-beans>
       <form-bean name="loginForm" type="br.com.unilet.actions.authentication.LoginForm" />
    <form-bean name="clienteForm" type="br.com.unilet.actions.cliente.ClienteForm" /></form-beans>

 

    <global-forwards>
     <forward name="login" path="/login.jsp" />
    </global-forwards>

 

<action-mappings>
  
    <action path="/Login"

        type="br.com.unilet.actions.authentication.LoginAction"

        name="loginForm"

        input="/login.jsp"

        scope="request">

        <forward name="success" path="/principal.jsp" redirect="false" />

        <forward name="login" path="/login.jsp" redirect="false" />

    </action>

    <action path="/ClienteLista"

        unknown="false"

        type="br.com.unilet.actions.cliente.ClienteListAction">

        <forward name="list" path="/clientelist.jsp" redirect="false" />

        </action>

    <action path="/GetCliente"

        type="br.com.unilet.actions.cliente.GetClienteAction"

        name="clienteForm"

        input="/editcliente.jsp"

        scope="request">

        <forward name="success" path="/editcliente.jsp" redirect="false" />

    </action>

 

</action-mappings>
    
<message-resources parameter="br.com.unilet.ApplicationResources" factory="org.apache.struts.util.PropertyMessageResourcesFactory" null="true" />
</struts-config>

 

Algu�m j� possou por este problema ? Onde estou errando ?

 

Obrigado � todos

 

 

Jairo Soares
Sun Certified Programmer Java 2 Platform 1.4
[EMAIL PROTECTED]

Responder a