Não consigo passar um ArrayList para uma Session

7 respostas
I

Boa tarde amigos,

Estou tentando dar um setAttribute de um ArrayList para uma session, mas não consigo. Abaixo seguem os códigos para verificação. O que posso fazer para resolver amigos?

Trecho da minha Action:

if(bf.getOpcao().equals("PESQUISAR") && bExistListar) {
	ArrayList beanFornecedorArray = daoFornecedor.listarTodosFornecedores(bf.getNomeFantasia());
	HttpSession session = request.getSession();
	session.setAttribute("lFornecedor", beanFornecedorArray);
	//request.setAttribute("lFornecedor", beanFornecedorArray); --> POR REQUEST FUNCIONA, MAS PRECISO PASSAR PARA SESSÃO.
						
}

Método daoFornecedor.listarTodosFornecedores da DAO:

public ArrayList <FornecedorVO> listarTodosFornecedores(String nomeFantasia) throws Exception {

		try	{
			String query =	"SELECT * " +
								"FROM TBL_FORNECEDOR F, TBL_FORNECEDOR_CONTATO FC "+
								"WHERE F.NOME_FANTASIA LIKE '"+nomeFantasia+"%' "+
								"AND F.ID = FC.ID "+
								"ORDER BY NOME_FANTASIA ";
			

			System.out.println("Query listarTodosFornecedores: " + query);

			
			xConn = new XConnection();
			xConn.rs = xConn.seleciona(query);

			ArrayList <FornecedorVO> lFornecedor = new ArrayList<FornecedorVO>();
			while(xConn.rs.next()) {
				FornecedorVO fornecedor = new FornecedorVO();
				
				fornecedor.setId(xConn.rs.getString(1));
				fornecedor.setNomeFantasia(xConn.rs.getString(2));
				fornecedor.setRazaoSocial(xConn.rs.getString(3));
				fornecedor.setCnpj(xConn.rs.getString(4));
				fornecedor.setIe(xConn.rs.getString(5));
				fornecedor.getContato().setNuTel(xConn.rs.getString(9));
			
				lFornecedor.add(fornecedor);
			}
			
			System.out.println("Montou lista: " + lFornecedor.size());
			
			xConn.fechaConexao();		
			return lFornecedor;

		} catch(SQLException e) {
			System.out.println("ERROR listarTodosFornecedores: " + e.toString());
			xConn.fechaConexao();
			return null;
		} catch(Exception e) {
			System.out.println("ERROR listarTodosFornecedores: " + e.toString());
			xConn.fechaConexao();
			return null;
		}					

	}

Obrigado.

7 Respostas

Pedrosa

Qual erro ocorre? como voce pega os valores da sessao no jsp?

robinsonbsilva

tenta passar assim:

request.getSession().setAtribute("lFornecedor", beanFornecedorArray);

vc está usando algum framework?

I

Amigo Pedrosa,

No JSP estou pegando por DisplayTag, desta forma:

Quando uso request.setAttribute(“lFornecedor”, beanFornecedorArray), funfa.

<display:table pagesize="1" name="lFornecedor">
		<display:column property="nomeFantasia" title="Nome Fantasia" styleClass="texto1"/>
		<display:column property="razaoSocial" title="Razão Social" styleClass="texto1"/>
		<display:column property="cnpj" title="CNPJ" styleClass="texto3"/>
		<display:column property="contato.nuTel" title="Telefone" styleClass="texto1"/>
	</display:table>

Amigo robinsonbsilva,
Quando chegar em casa vou testar a sua solução. Estou usando Struts 1.3.8.

Obrigado.

I

Não apresenta nenhum erro, somente a session não é populada e não exibe nenhum registro na lista. Coloquei propositamente 1 no atributo de qtd de registros (pagesize=“1”) para criar a segunda pagina, pois estou fazendo paginação… ai quando uso request e nao jogo na sessao, somente a 1 pagina que tem registro e a segunda nao… ai para resolver isto tenho q passar a lista para uma sessão… mas nao estou conseguindo…

O q posso fazer amigos?

Amigo robinsonbsilva, tentei usar oq vc postou, mas a session não foi populada.

Vlw…

krantz

colega, no displaytag tenta pegar assim:

<display:table name="${sessionScope.lFornecedor}" defaultsort=“1” requestURI="#">

marcosharbs

como vc ta listando ela no jsp?
ta usando um iterate??

I

Descobri amigos, na verdade estava faltando o parametro scope no displaytag:

<display:table pagesize="1" name="lFornecedor" scope="session">

Vlw amigos…

Obrigado.

Criado 5 de novembro de 2008
Ultima resposta 6 de nov. de 2008
Respostas 7
Participantes 5