Não consigo passar um ArrayList para uma Session

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.

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

tenta passar assim:

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

vc está usando algum framework?

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.

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…

colega, no displaytag tenta pegar assim:

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

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

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

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

Vlw amigos…

Obrigado.