Boa tarde Pessoal,
Gostaria de uma ajuda, estou passando uma lista através de um Hashmap para o JSP porem não sei como receber esta lista:
CLASSE JAVA
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.swing.JOptionPane;
import conexao.Connect;
public class teste2 {
static Connect c = new Connect();
@SuppressWarnings("unchecked")
public Connection getConnection() {
c.conexao();
return c.conexao;
}
public static void main(String[] args) {
c.conexao();
}
public List listar_cnpj(String nome) {
c.conexao();
List lista = new ArrayList();
try {
c.statement = c.conexao
.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
c.resultset = c.statement
.executeQuery("SELECT CNPJ||'.pdf'AS PDF FROM FORNECEDOR WHERE 1=1 AND UPPER (NOME) = UPPER('"
+ nome + "')order by PDF asc");
while (c.resultset.next()) {
HashMap hmap = new HashMap();
hmap.put("pdf", c.resultset.getString("PDF"));
lista.add(hmap);
// c.desconectar();
}
} catch (SQLException Banco) {
System.out.println("Erro de manipulação do banco: " + Banco);
JOptionPane.showMessageDialog(null,
"Erro de manipulação do banco: " + Banco);
}
JOptionPane.showMessageDialog(null, "Sua lista é: " + lista);
System.out.println("funcionou: \n" + lista);
c.desconectar();
return lista;
}
}
E ESTOU QUERENDO RECEBER NESTE JSP:
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.List"%>
<%@page import="javax.swing.JOptionPane"%>
<%@page import="conexao.Connect"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ambev</title>
<%
teste2 t = new teste2();
List<String> cnpjs = new ArrayList();
cnpjs = t.listar_cnpj("edisupplier");
%>
</head>
<body>
<br>
<br>
<li>
Teste vai ser aqui:<%=cnpjs%>
</li>
</body>
</html>
Obrigado e desculpa o amadorismo
Não é só iterar o seu List e recuperar o objeto realizando um cast para HashMap?
Por exemplo:
<%
teste2 t = new teste2();
List<String> cnpjs = t.listar_cnpj("edisupplier");
for(Object object : cnpjs){
HashMap map = (HashMap) object;
String pdf = map.get("PDF");
}
%>
Só implemente como desejar.
Mas não seria mais fácil criar um Bean para representar seu objeto PDF ao invés de um HashMap ou apenas passar a lista de string com o nome dos arquivos para simplificar?
Boa tarde Eron Alves,
Não posso utilizar Beans,
Não sei utilizar a lista simples. Se puder colocar um exemplo.
Tentei a solução que foi enviado por você,
e na linha
String pdf = map.get("PDF");
Apresentou o seguinte erro:
Type mismatch: cannot convert from Object to String
Abraço
A Lista simples seria adicionar a string retornada por sua consulta diretamente a List, sem precisar criar o seu Map.
O Map é utilizado quando é necessário o uso de identificadores únicos para cada informação (IDs) como você está setando um ID fixo no Map (“PDF”), creio que não é necessário a sua utilização.
Exemplo Lista Simples de Strings:
String pdf = c.resultset.getString("PDF");
lista.add(pdf);
O erro “Type mismatch: cannot convert from Object to String” significa que é necessário realizar o casting do retorno da lista.
Um tópico que indico para ser estudado é sobre Generics, facilitam bastante pois você indica um Type para suas Coleções e Maps e não é necessário
realizar o casting ao retornar as informações contidas em sua lista genérica.
Para resolver acrescente o “(String)”:
String pdf = (String) map.get("pdf"); //correção do identificar colocado em minúsculo.
Com generics ficaria assim:
List<String> strings = new ArrayList<String>();
String value = strings.get(0);
A própria coleção fica responsável pelo casting. (:
Estou com mais uma duvida Eron,
eu troquei o map pela Lista simples de String,
String pdf = c.resultset.getString("PDF");
lista.add(pdf);
Como faço para pegar ela no jsp?
Pois com o map não funcionou como você tinha me explicado, e esta lista pode ser mais simples.
Abraço
Fiz um exemplo simples com JSP:
Classe Teste:
package teste;
import java.util.ArrayList;
import java.util.List;
public class Teste {
private List<String> lista;
public List<String> getLista(){
lista = new ArrayList<String>();
lista.add("Maçã");
lista.add("Pêssego");
return lista;
}
}
Página JSP:
<%@page import="java.io.PrintWriter"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="teste.Teste"%> <!-- Necessário importar sua classe. -->
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<% Teste teste = new Teste();
List<String> lista = teste.getLista();
for(String objeto : lista){%>
<%=objeto %>
<% } %>
</body>
</html>