Tabela no jsp

8 respostas
A

Eu tenho uma tabela que está dentro de um formulário, “Form name=formlistagem” e as colunas são: “chacodigo, chadata, chahorario e chacdp”, no meu jsp que é preenchida com os dados do banco de dados, e quero selecionar uma linha da minha tabela e quando apertar o botão, “Botão Value=Dados” quero pegar o chacodigo da linha selecionada e enviar para minha servlet, action="/Teleaudiencia/ServAgendamentos". Será que alguém possa me ajudar ?

<form id="formlistagem" method="post" action="/Teleaudiencia/ServAgendamentos">
<p class="style2">
  <label> 
  </label>
</p>

<table width="953" height="24" border="1" align="center" bgcolor="#FFFFFF"  id="tabelalocalizar" >
  <tr>
    <td width="129" height="13"><div align="center"><strong><span class="style5">C&oacute;digo</span></strong></div></td>
    <td width="165"><div align="center"><strong><span class="style5">Data</span></strong></div></td>
    <td width="172"><div align="center"><strong><span class="style5">Hor&aacute;rio</span></strong></div></td>    
    <td width="459"><div align="center"><strong><span class="style5">CDP</span></strong></div></td>    
    </tr>
    	<%   
        List lista = (List)session.getAttribute("listachamados");   
        for (int i = 0; i < lista.size(); i++ ) 
			{   
        %>   
        <tr>
        <td> <div align="center" class="style3"><%=((ChamadosVO)lista.get(i)).getChaCodigo() %> </div></td>
        <td> <div align="center" class="style3"><%=convdata.parseDataBra(((ChamadosVO)lista.get(i)).getChaData()) %> </div></td>
        <td> <div align="center" class="style3"><%=((ChamadosVO)lista.get(i)).getChaHora() %> </div></td>
        <td> <div align="center" class="style3"><%=cdp.buscarCdp(((ChamadosVO)lista.get(i)).getCdpCodigo()) %> </div></td>
    	</tr>
        <%   
         }   
         %> 
</table>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center" class="style2"><label><span class="style5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="submit" name="acao" id="acao" value="Dados" />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></label>
</p>
</form>

8 Respostas

L

eu uso assim:

na ultima linha da tabela eu coloco uma celula com um link para onde eu quero ± assim

<table width="953" height="24" border="1" align="center" bgcolor="#FFFFFF" id="tabelalocalizar" > <tr> <td width="129" height="13"><div align="center"><strong><span class="style5">Código</span></strong></div></td> <td width="165"><div align="center"><strong><span class="style5">Data</span></strong></div></td> <td width="172"><div align="center"><strong><span class="style5">Horário</span></strong></div></td> <td width="459"><div align="center"><strong><span class="style5">CDP</span></strong></div></td> </tr> <% List lista = (List)session.getAttribute("listachamados"); for (int i = 0; i < lista.size(); i++ ) { %> <tr> <td> <div align="center" class="style3"><%=((ChamadosVO)lista.get(i)).getChaCodigo() %> </div></td> <td> <div align="center" class="style3"><%=convdata.parseDataBra(((ChamadosVO)lista.get(i)).getChaData()) %> </div></td> <td> <div align="center" class="style3"><%=((ChamadosVO)lista.get(i)).getChaHora() %> </div></td> <td> <div align="center" class="style3"><%=cdp.buscarCdp(((ChamadosVO)lista.get(i)).getCdpCodigo()) %> </div></td> <td> <div align="center" class="style3"><a href="AQUI VC CHAMA O SERVLET E PASSA O CODIGO COMO PARAMETRO">testo do link</a> </div></td> </tr> <% } %> </table>
A

Consegui fazer uma parte, assim faço um submit no formulário e envio a Servlet:

´
<td> <div align="center" class="style3"><a href="javascript:formlistagem.submit()" ><input type="hidden" name="acao" value="Dados"/>&nbsp;&nbsp;Enviar</a></div></td>

Mas não consigo passar como parâmetro o valor da primeira célula da linha selecionada, por favor me ajude !

Obrigado !!!

A

consegui resolver assim :

<td> <div align="center" class="style3"><a href="javascript:formlistagem.submit()" ><input  type="hidden" name="chacodigo" value="<%=((ChamadosVO)lista.get(i)).getChaCodigo() %>" /><input  type="hidden" name="acao" value="Dados"/>&nbsp;&nbsp;Enviar</a></div></td>

Só que estou com outro problema, a minha tabela não preenche com todos dados existentes, ela é preenchida com o último registro duplicado. Exemplo : Se há 2 registros no banco a tabela pega o último registro e preenche a tabela duplicando o registro e ficando na tabela o mesmo registro duas vezes !

O meu método para buscar o registro no banco é esse :
Se você puder me ajudar, por favor. Em Swing eu sei fazer usando o JTable mas em web( jsp ) tenho um pouco de dificuldade. Obrigado !

public ArrayList listarChamados() {
        Connection dbCon;
        String sql = "";
        int x = 0;
        ChamadosVO chavo = new ChamadosVO();
        ArrayList ret = new ArrayList();
        try {
            Class.forName("org.postgresql.Driver");
            String a = "jdbc:postgresql://localhost:5432/cdpforum";
            dbCon = DriverManager.getConnection(a, "User", "1234");
            java.sql.Statement s = dbCon.createStatement();
            sql = "Select chacodigo, chadata, chahora, cdpcodigo from chamados";
            ResultSet rs = s.executeQuery(sql);

            while (rs.next()) {
                
                chavo.setChaCodigo(rs.getInt("chacodigo"));
                chavo.setChaData(rs.getString("chadata"));
                chavo.setChaHora(rs.getString("chahora"));
                chavo.setCdpCodigo(rs.getInt("cdpcodigo"));                
                ret.add(chavo);
                x++;
            }
            rs.close();
            s.close();

        } catch (ClassNotFoundException e) {
            System.out.println("Erro de configuracao" + e.getException());
        } catch (SQLException sqle) {
            System.out.println("Erro de SQL:" + sqle.getMessage() + " - " + sql);
        }
        return (ArrayList) ret;
    }
L

não vi nenhu erro no codigo. apenas notei que o comando INT X = 0 e X++ não tem utilidade.
sera que o erro não esta no codigo de preenchimento do jsp?

da a empresão que e algum erro em laço FOR,

parece que o ArrayList chega no fim e o laço FOR executa uma vez a mais.

A

Boa Tarde ! Mai uma coisa não abusando, por favor ! Cara como faço para pegar o valor da primeira célula da tabela da linha que eu clicar para que eu possa enviar como parâmetro para minha servlet.

Eu fiz assim: <input type="hidden" name="chacodigo" value='"><%=RS.getString("chacodigo") %>' />

A Tabela Consegui resolver assim :

public ResultSet ResultSetChamados(){
        Connection dbCon;
        ResultSet res = null;
        try {
            Class.forName("org.postgresql.Driver");
            String a = "jdbc:postgresql://localhost:5432/cdpforum";
            dbCon = DriverManager.getConnection(a, "Alex", "mattos");
            java.sql.Statement s = dbCon.createStatement();
            res = s.executeQuery("Select chacodigo, chadata, chahora, cdpcodigo from chamados");

            } catch (ClassNotFoundException e) {
                    System.out.println("Erro de configuracao");
                    e.printStackTrace();
            } catch (SQLException sqle) {
                    System.out.println("Erro de SQL");
                    sqle.printStackTrace();
            }
        return res;
    }
<table width="953" height="24" border="1" align="center" bgcolor="#FFFFFF"  id="tabelalocalizar" >
  <tr>
    <td width="129" height="13"><div align="center"><strong><span class="style5">C&oacute;digo</span></strong></div></td>
    <td width="165"><div align="center"><strong><span class="style5">Data</span></strong></div></td>
    <td width="172"><div align="center"><strong><span class="style5">Hor&aacute;rio</span></strong></div></td>    
    <td width="459"><div align="center"><strong><span class="style5">CDP</span></strong></div></td>
    <td width="459"><div align="center"><strong><span class="style5">Ação</span></strong></div></td>
    </tr>
        <%
        RS=chamados.ResultSetChamados();
        %>
        <%
        while(RS.next()){
        %>
    	 
        <tr>
        <td> <div align="center" class="style3"><%=RS.getString("chacodigo") %> </div></td>
        <td> <div align="center" class="style3"><%=convdata.parseDataBra(RS.getString("chadata")) %> </div></td>
        <td> <div align="center" class="style3"><%=RS.getString("chahora") %> </div></td>
        <td> <div align="center" class="style3"><%=cdp.buscarCdp(RS.getInt("cdpcodigo")) %> </div></td>
        <td> <div align="center" class="style3"><a href="javascript:formlistagem.submit()" ><input  type="hidden" name="acao" value="Dados"/>&nbsp;&nbsp;Enviar</a></div></td>
        
    	</tr>
        <%   
         }   
         %> 
</table>
L

veja um exemplo de como eu costumo passar parametros para servlet e paginas jsp.

<td>
            Excluir = <a href="confirmar.jsp?url=feriado.jsp&excluir=servlet?operacao=feriado_excluir&mensagem=Confirmar exclusao do feriado do dia <%= b1.getDia() %>&codigo=cod_feriado=<%= cod_feriado %>"><img src='imagens/lixo.gif' border=0></a>
            Alterar = <a href="feriado_alterar.jsp?cod_feriado=<%= cod_feriado %>"><img src='imagens/novo.gif' border=0></a>
          </td>

este exemplo é exatamente como esta no meu codigo.

sao duas linhas de comando, na qual a primeira linha chama um jsp de confimação que possui trez parametro, URL, EXCLUIR, E MENSAGEM.
onde URL contem o comando para qual pagina jsp vai abrir depois que executar tudo,
onde EXCLUIR contem o comando para chamar o servlet e passar a opereçao que o servlet vai realizar.
onde MENSAGEM é apenas a mensagem de confimaçao.

e a segunda linha é um link com uma imagem que chama um jsp e passa como parametro o codigo no caso cod_feriado

trazendo par o seu codigo acho q fica a+ assim:

<td><a href="servelt?operacao="texto_operacao"&cdpcodigo=<%= RS.getInt("cdpcodigo")%></a>testo do link</td>

e la no servlet no metodo q traba a operação voce chama assim:

String codigo = request.getParameter("cdpcodigo");

dai em diante vc faz o que quizer, porque o parameto esta assessivel dentro do servelet.

lenbrando que no testo do link vc pode usar o retorno da sua tabela = <%= RS.getInt(“cdpcodigo”)%>

eu seu q a primeira linha é meio compricado para entender, por isso lhe mostrar meu codigo q contem a pagina jsp de confimação. de uma olhada…

<%@page errorPage="erro.jsp"%>
<jsp:include page="estilos.css" />

<%!
    String url;
    String excluir;
    String codigo;
    String mensagem;
%>

<%
     url = new String();
     excluir = new String();
     codigo = new String();
     mensagem = new String();
 try {   
     url = new String(request.getParameter("url"));
     excluir = new String(request.getParameter("excluir"));
     codigo = new String(request.getParameter("codigo"));
     mensagem = new String(request.getParameter("mensagem"));
     excluir += "&"+ codigo;
 }catch(Exception ex){}
%>

<html>
<head>
<title>Ponto Web</title>
</head>
<body>
    <center>
        <br>
        <br>
        <br>
        <br>
        <h1> Confirmação</h1>
        <br>
        <br>         
        <h2><%= mensagem %></h2>                    
        <table>
            <tr>
                <th align='center' width='75'><a href="<%=excluir%>">Sim</a></th>
                <th align='center' width='75'><a href="<%=url%>">Não</a></th>
            </tr>
        </table>
    </center>
</body>
A

Consegui resolver a minha dúvida com a sua ajuda, veja abaixo com ficou:

Está funcionando normalmente, ele envia o parâmetro para a Servlet quando eu seleciono o link através do método GET, se eu quisesse mudar para o método Post, dá para mudar? Pois na verdade ele não está dando um submit num formulário, senão seria bem fácil configurar no formulário o método que eu gostaria, mas e desta forma que resolvi, enviando através de um link, dá para alterar o método de envio ?

<table width="953" height="24" border="1" align="center" bgcolor="#FFFFFF"  id="tabelalocalizar" >
  <tr>
    <td width="129" height="13"><div align="center"><strong><span class="style5">C&oacute;digo</span></strong></div></td>    
    <td width="165"><div align="center"><strong><span class="style5">Data</span></strong></div></td>
    <td width="172"><div align="center"><strong><span class="style5">Hor&aacute;rio</span></strong></div></td>    
    <td width="459"><div align="center"><strong><span class="style5">CDP</span></strong></div></td>    
    </tr>
        <%
        RS=chamados.ResultSetChamados();
        %>
        <%
        while(RS.next()){
        %>
    	 
        <tr>
        
        <td> <div align="center" class="style3" ><a  href="/Teleaudiencia/ServAgendamentos?acao=Dados&chacodigo=<%= RS.getInt("chacodigo")%>  "><%=RS.getString("chacodigo") %></a></div></td>
        <td> <div align="center" class="style3"><%=convdata.parseDataBra(RS.getString("chadata")) %> </div></td>
        <td> <div align="center" class="style3"><%=RS.getString("chahora") %> </div></td>
        <td> <div align="center" class="style3"><%=cdp.buscarCdp(RS.getInt("cdpcodigo")) %> </div></td> 
    	</tr>
        <%   
         }   
         %> 
</table>
L

Sempre há outros meios de resolver problemas de programçao.

Na questao do submit: a primeira idéia q me vem e dar um jeito de usar a teg dentro do seu while(RS.next()), em cada loop criar um . Desculpe se estou falando besteira.

E na questao de usar link eu aprendi com meu professor de java, que os links sempre serão conpativeis com todos os navegadores web, e provavelmente nunca dará problemas com script bloqueado.

Criado 25 de março de 2011
Ultima resposta 5 de abr. de 2011
Respostas 8
Participantes 2