Realizar busca com DAO e exibir com Struts

Olá pessoal,

Iniciante em Struts é cheio de dúvidas!!! rsrs… Estou com a seguinte dúvida, estou utilizando Strus e em uma busca no BD utilizando o a classe DAO eu recebo um arraylist e exibo na tela o resultado em uma tabela. Nesta tabela em cada linha é exibida o resultado da pesquisa, queria na primeira coluna em cada linha exibir um Link ou algo parecido que ao clicar ele pegasse o ID e utilizasse o o procedimento findContatoByIdContato do DAO para então exibir uma outra tela onde ou possa editaro elemento escolhido, porém não sei utilizar o ID do objeto que já esta na página ConsultaContatoSuccess.jsp. Como faço isso?

Classe ContatoDAO.java

package com.myapp.struts;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
/**
 *
 * @author suporte
 */
public class ContatoDAO {
    /** Creates a new instance of ProdutoDAO */
    public ContatoDAO()throws Exception {
        Class.forName(jdbc_driver).newInstance();
        Connection conn = DriverManager.getConnection(jdbc_url, jdbc_user, jdbc_password);
        statement = conn.createStatement();
    }
    
    public void close() {
        try {
            this.statement.close();
        } catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public Contato findContatoByIdContato(int idContato) {
        Contato contato = null;
        try {
            ResultSet rs =
                    this.statement.executeQuery( "SELECT * FROM contato WHERE id_contato="
                    + idContato);
            if (rs.next()) {
                contato = new Contato(  rs.getInt(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6),
                        rs.getString(7),
                        rs.getString(8),
                        rs.getString(9),
                        rs.getString(10),
                        rs.getString(11));
            }
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return contato;
    }
    
    public ArrayList listAllContatos() {
        ArrayList contatos = new ArrayList();
        Contato contato;
        try {
            ResultSet rs = this.statement.executeQuery("SELECT * FROM contato ORDER BY nome_contato");
            while(rs.next()) {
                contato = new Contato(  rs.getInt(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6),
                        rs.getString(7),
                        rs.getString(8),
                        rs.getString(9),
                        rs.getString(10),
                        rs.getString(11));
                contatos.add(contato);
            }
        } catch(SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return contatos;
    }
    
    public ArrayList findContatoByNome(String nomeContato) {
        ArrayList contatos = new ArrayList();
        Contato contato;
        try {
            ResultSet rs = this.statement.executeQuery("SELECT * FROM contato WHERE nome_contato LIKE '%" + nomeContato + "%'");
            while(rs.next()) {
                contato = new Contato( rs.getInt(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6),
                        rs.getString(7),
                        rs.getString(8),
                        rs.getString(9),
                        rs.getString(10),
                        rs.getString(11));
                contatos.add(contato);
            }
        } catch(SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return contatos;
    }
    
    public boolean InsertContato(Contato contato) {
        String nomeContato = contato.getNomeContato();
        String sobrenomeContato = contato.getSobrenomeContato();
        String empresaContato = contato.getEmpresaContato();
        String enderecoContato = contato.getEnderecoContato();
        String cidadeContato = contato.getCidadeContato();
        String estadoContato = contato.getEstadoContato();
        String emailContato = contato.getEmailContato();
        String dddContato = contato.getDddContato();
        String telefoneContato = contato.getTelefoneContato();
        String celularContato = contato.getCelularContato();
        boolean teste = false;
        try {
            int linhas = this.statement.executeUpdate("INSERT INTO contato VALUES(null,'"
                    +nomeContato +"','"
                    +sobrenomeContato+"','"
                    +empresaContato+"','"
                    +enderecoContato+"','"
                    +cidadeContato+"','"
                    +estadoContato+"','"
                    +emailContato+"','"
                    +dddContato+"','"
                    +telefoneContato+"','"
                    +celularContato+"')");
            if (linhas > 0)
                teste = true;
            else
                teste = false;
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return teste;
        
        
    }
    
    
    public boolean DeleteContato(String idContato) {
        boolean teste = false;
        try {
            int linhas = this.statement.executeUpdate( "DELETE FROM contato WHERE id_contato ='" + idContato + "'");
            if (linhas > 0)
                teste = true;
            else
                teste = false;
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return teste;
    }
    
    
    
    public boolean AlteraContato(Contato contato) {
        int idContato = contato.getIdContato();
        String nomeContato = contato.getNomeContato();
        String sobrenomeContato = contato.getSobrenomeContato();
        String empresaContato = contato.getEmpresaContato();
        String enderecoContato = contato.getEnderecoContato();
        String cidadeContato = contato.getCidadeContato();
        String estadoContato = contato.getEstadoContato();
        String emailContato = contato.getEmailContato();
        String dddContato = contato.getDddContato();
        String telefoneContato = contato.getTelefoneContato();
        String celularContato = contato.getCelularContato();
        boolean teste = false;
        try {
            String id = String.valueOf(idContato);
            String sql = "";
            sql = "UPDATE contato  SET " +
                    "nome_contato = '"+nomeContato+"'" +
                    ", sobrenome_contato = '"+sobrenomeContato+"'" +
                    ", empresa_contato = '"+empresaContato+"'" +
                    ", endereco_contato = '"+enderecoContato+"'" +
                    ", cidade_contato = '"+cidadeContato+"'" +
                    ", estado_contato = '"+estadoContato+"'" +
                    ", email_contato = '"+emailContato+"'" +
                    ", ddd_contato = '"+dddContato+"'" +
                    ", telefone_contato = '"+telefoneContato+"'" +
                    ", celular_contato = '"+celularContato+"'" +
                    " WHERE id_contato =" + idContato;
            int linhas = this.statement.executeUpdate(sql);
            if (linhas > 0)
                teste = true;
            else
                teste = false;
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return teste;
    }
    private Statement statement;
    private static String jdbc_driver= java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.driver");
    private static String jdbc_url = java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.url");
    private static String jdbc_user = java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.user");
    private static String jdbc_password = java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.password");
    
    
}

Página ConsultaContatoSuccess.jsp

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ page errorPage="erro.jsp" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Consulta Contato</title>
    </head>
    <body>
        <h1>Resultado da Consulta</h1>
        <table border="1">
            <thead>
                <tr>
                    <th>Editar</th>
                    <th>Excluir</th>
                    <th>ID</th>
                    <th>Nome</th>
                    <th>Sobrenome</th>
                    <th>Empresa</th>
                    <th>Endereco</th>
                    <th>Cidade</th>
                    <th>Estado</th>
                    <th>Email</th>
                    <th>DDD</th>
                    <th>Telefone</th>
                    <th>Celular</th>
                </tr>
            </thead>
            <logic:iterate name="contatosnome" id="contatos" >
                <tbody>
                <tr>
                    <td>Link ou Botão para Excluir AQUI!!!</td>
                    <td>Link ou Botão para Editar AQUI!!!</td>
                    <td><bean:write name="contatos" property="idContato"/></td>
                    <td><bean:write name="contatos" property="nomeContato"/></td>
                    <td><bean:write name="contatos" property="sobrenomeContato"/></td>
                    <td><bean:write name="contatos" property="empresaContato"/></td>
                    <td><bean:write name="contatos" property="enderecoContato"/></td>
                    <td><bean:write name="contatos" property="cidadeContato"/></td>
                    <td><bean:write name="contatos" property="estadoContato"/></td>
                    <td><bean:write name="contatos" property="emailContato"/></td>
                    <td><bean:write name="contatos" property="dddContato"/></td>
                    <td><bean:write name="contatos" property="telefoneContato"/></td>
                    <td><bean:write name="contatos" property="celularContato"/></td>
                </tr>
            </logic:iterate>
            </tbody>
        </table>
     </body>
</html>

Ah… preciso fazer isso utilizando Struts.
Se acharem melhor posso enviar os Beans que utilizo para exibir os resultados

Grato a todos.
Wallfox

Vc precisa criar um link para uma action, e nesta vc define de alguma forma, ou usando DynaAction ou utilizando um parâmetro, tipo acao=excluir e passa o seu id junto com esse link e lá faz o direcionametno, tipo assim:

<html:link page="/minhaAction.do" paramId="idContato"
paramName=“contatos” paramProperty=“idContato”>
EXCLUIR
</html:link>

espero q dê pra entender, se não pergunta de novo :slight_smile:

Perfect!!!

Agora surgiu outra dúvida.
Após o action (Abaixo) fazer a pesquisa no BD e direcionar para a página JSP como faço para imprimir os valores dentro da tag <html:text/> ?
Se for no <html:write> eu consigo assim:

&lt;bean&#58;write name=&quot;contato&quot; property=&quot;idContato&quot;/&gt;
package com.myapp.struts;

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.ActionMapping;
import org.apache.struts.action.ActionForward;


public class EditaContatoAction extends Action &#123;

    private final static String SUCCESS = &quot;editarContato&quot;;

    public ActionForward execute&#40;ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response&#41;
            throws Exception &#123;
        HttpSession session = request.getSession&#40;&#41;;
        String idContato = request.getParameter&#40;&quot;idContato&quot;&#41;;  
        Contato contato = new Contato&#40;&#41;;
        ContatoDAO contatoDAO = new ContatoDAO&#40;&#41;;
        int temp = Integer.parseInt&#40;idContato&#41;;
        contato = contatoDAO.findContatoByIdContato&#40;temp&#41;;
        request.setAttribute&#40;&quot;contato&quot;, contato&#41;;
        contatoDAO.close&#40;&#41;;
        return mapping.findForward&#40;SUCCESS&#41;;   
    &#125;
&#125;

Grato
Wallfox