Problema para lista arraylist

5 respostas
newuser

Olá pessoal, olha eu de novo com mais um problema de iniciante>

É o seguinte, eu tenho o form programacao:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<jsp:useBean id="midia" scope="session" class= "classe.modelo.vo.Midia" /> 
<jsp:useBean id="listaMidia" scope="request" class="java.util.ArrayList"/> 
<%@ page import="java.util.ArrayList" %>
<%@ page import="classe.modelo.vo.Ponto"%>
<%@ page import="classe.modelo.dao.PontoDao"%>
<%! ArrayList<Ponto> listPonto = null;%>
<%  listPonto = PontoDao.listarPonto(); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Programação</title>
</head>
<body>
<jsp:include page="menu.jsp" />
 <fieldset>
   <h2>Cadastro de Programação</h2>
 <table border="0" cellpadding="0" cellspacing="0" width="100%">
   <tr>
    <td colspan="2">
    <fieldset>
    <br>
      <form action="ServletMidia?acao=Listar" method="post" name="frmprocuraponto">
         <table  border="0" cellpadding="0" cellspacing="0" width="100%">
           <tr>
             <td>&nbsp;Selecione o Ponto:&nbsp;</td>
             <td>
              <select name="ponto" style="width:300px;">
                <option value=""></option>
                <% for(int i=0;i < listPonto.size();i++){%>
                <option value="<%=listPonto.get(i).getId()%>"><%=listPonto.get(i).getDescricao()%></option>
                <%} %>
              </select>
                &nbsp;&nbsp;<input type="submit" value="Confirma"> 
             </td>
             <td></td>
           </tr>
         </table>
      </form>
     </fieldset>
    </td>
   </tr>
   <tr>
    <td>
    <fieldset>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
     <tr>
      <td>
        <div id="texto"><p>Lista de Mídias</p></div>
        <form action="" method="post" name="frmprogmidia">
        <!--exibir grade com as mídias para selecionar -->
        <table class="titulo" cellspacing="0" cellpadding="0">
        <tr>
         <td class="titulocel" width="100">Id</td>
         <td class="titulocel" width="500">Descrição</td>
         <td class="titulocel" width="100">Duração</td>
         <td class="titulocel" width="100">Cadastro</td>
         <td class="titulocel" width="100">Situação</td>
         <td class="titulocel" width="70">Adicionar</td>
       </tr>
       <tr>
        <td colspan="6"><div id="conteudo">
        <div id="resultado">
        <table width="975" border="0" cellspacing="1" cellpadding="0">
         <c:forEach items="${listaMidia}" var="lista">
          <tr valign="middle">
            <td height="30" width="100" align="center" bgcolor="#FFFFFF"><c:out value="${lista.id}"></c:out></td>
            <td height="30" width="400" align="center" bgcolor="#FFFFFF"><c:out value="${lista.descricao}"></c:out></td>
            <td height="30" width="110" align="center" bgcolor="#FFFFFF"><c:out value="${lista.tempo}"></c:out></td>
            <td height="30" width="110" align="center" bgcolor="#FFFFFF"><c:out value="${lista.dataCadastro}"></c:out></td>
            <td height="30" width="110" align="center" bgcolor="#FFFFFF"><c:out value="${lista.sts}"></c:out></td>
            <td height="30" width="50" align="right" bgcolor="#FFFFFF"></td>
           </tr>
         </c:forEach>  
       </table>
       </div>
       </div>
       </td>
      </tr>
      <!--fim exibir grade com as midias para selecionar -->
      </table>
        </form>
        </td>
        </tr>
        <tr>
          <td>
          <div id="texto"><p>Programação</p></div>
          <div id="contentWrap">

		<div id="contentLeft">
			<ul>

				<li id="recordsArray_<?php echo $row['prog_id']; ?>">
				  <input type="text" name="prog_id" value=""/>  
				  <input type="text" name="midia_descricao" value=""/>  
				  <input type="text" name="prog_duracao" value=""/>
				  <input type="text" name="prog_data_ini" value=""/>   
				  <input type="text" name="prog_data_fim" value=""/>   
				  <input type="text" name="prog_sts" value=""/> 
				</li>
					
			</ul>
		</div>
		
		<div id="contentRight">
		  <p>Array will be displayed here.</p>
		  <p>&nbsp; </p>
		</div>
	
	</div>
          </td>
        </tr>
    </table>    
    </fieldset>
    </td>
   </tr>
 </table>
 </fieldset>
</body>
</html>

A classe MidiaDao:

package classe.modelo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import classe.conexao.Conexao;
import classe.modelo.vo.Empresa;
import classe.modelo.vo.Midia;

public class MidiaDao {
	static Connection conexao;
	
	public MidiaDao(){
    	conexao = Conexao.conectar();
    }

	public static ArrayList<Midia> listarMidia(int Id){
    	try {
    		conexao = Conexao.conectar();
    		ArrayList<Midia> lista = null;
    		String sql="SELECT * From midia where midia_emp_id=? order by midia_id asc";
    		PreparedStatement consulta = conexao.prepareStatement(sql);
    		consulta.setInt(1,Id);
    		ResultSet resultado = consulta.executeQuery();
    		lista = new ArrayList<Midia>();
    		while(resultado.next()){
    			Midia midia = new Midia();
    			  midia.setEmpresa(new Empresa());
    			  midia.setId(resultado.getInt("midia_id"));
    			  midia.setDescricao(resultado.getString("midia_descricao"));
    			  midia.setNomeArq(resultado.getString("midia_nomearq"));
    			  midia.setLocalArq(resultado.getString("midia_localarq"));
    			  midia.setTempo(resultado.getInt("midia_tempo"));
    			  midia.setDataCadastro(resultado.getDate("midia_dtcadastro"));
    			  midia.setSts(resultado.getString("midia_sts"));
    			  midia.setTamanho(resultado.getInt("midia_tamanho"));
    			  midia.setDtCriacao(resultado.getDate("midia_dtcriacao"));
    			  midia.getEmpresa().setId(resultado.getInt("midia_emp_id"));
    			  lista.add(midia);
    		}
    		return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
    }
}

E a classe ListarMidia:

package classe.controle.servico;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import classe.modelo.dao.MidiaDao;
import classe.modelo.vo.Midia;

public class ListarMidia {
	public static String execute(HttpServletRequest request){
	    String jsp="";
	    try {
	    	String ponto = request.getParameter("ponto");
	    	ArrayList<Midia> midia = MidiaDao.listarMidia(Integer.parseInt(ponto));
			if(midia != null){
			   request.setAttribute("midia", midia);
			   jsp = "/frmprogramacao.jsp";
			}else{
				String erro = "Ocorreu um erro ao listar as mídia!";
				request.setAttribute("erro", erro);
				jsp = "/erro.jsp";
			}
		} catch (Exception e) {
			e.printStackTrace();
			jsp = "";
		}
		return jsp;
	}
}

Não exibe os valores e nem dá mensagem de erro. Eu testei minha sql diretamente no bd está correta.
Acho que o problema está na jsp ou no controle ListarMidia

Alguém mais experiente pode me auxiliar, por favor?

Obrigado!

5 Respostas

L

Fala newuser,
Como já testou seu select e está ok, tente debugar e verificar se o parâmetro que você chamou de ponto está vindo vazio na classe ListarMidia.

F

só um conselho…

tente usar JSTL ao invés de “Scriptlet” (eu acho q é assim o nome)…

isso evitaria vc ficar programando na página JSP

williamdasflores

Cara, acho que o problema é esse…
Você colocou seu método como static e está fazendo a chamada dele:

ArrayList<Midia> midia = MidiaDao.listarMidia(Integer.parseInt(ponto));

Como você chamou ele direito sem chamar o construtor da classe DAO, ele não criou a conexão com o banco
Acho que o ideal seria você deixar esse método sem ser static e quando você for chamar ele instancia e chama o método.

newuser

construtor da classe DAO? Como ficaria então esta linha, williamdasflores?

williamdasflores

esqueci, não tinha visto que você criou a conexão logo no começo do método.

conexao = Conexao.conectar();

Você já debugou??

Criado 15 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 5
Participantes 4