Session beans em hashtables

3 respostas
Filipi_Silveira

Na minha aplicação web até agora, eu estava conseguindo gravar e ler beans de uma session sem maiores problemas. Agora surgiu uma situação em que eu preciso passar uma coleção de beans. Achei no livro da Wrox um exemplo que usava Hashtable para fazer isso. Só que não funciona!

Ocorre uma exceção assim quando tento gravar a Hashtable na sessão:

java.io.NotSerializableException: xxxxx.xxxx.xxxx.Language

A hashtable contém vários destes objetos Language.

Acontece que esse mesmo objeto Language quando é gravado sozinho na session funciona perfeitamente!

Alguém sabe por que isso acontece? Só por que ele tá encapsulado num Hashtable? Alguma solução melhor que usar Hashtable?

Obrigado.

Filipi P. Silveira

3 Respostas

jgbt

esse objeto precisa implementar a interface serializable, para poder trafegar pela rede.

[]'s

Filipi_Silveira

jgbt:
esse objeto precisa implementar a interface serializable, para poder trafegar pela rede.

[]'s

Sim, isso eu sei e já arrumei. 8)

A questão é por que quando eu gravava o objeto sozinho na seção ele funcionava perfeitamente? Por que agora vou ter que alterar várias classes para implementar Serializable… :?

Valeu!

Filipi Silveira

E

Na verdade ele deve funcionar normalmente,
Vc deve estar fazendo errado no momento de recuper o objeto no jsp.

Veja o exemplo:

//Na Action:

LinkedHashMap recursoEmpresaMap = RecursoEmpresaBD.getInstance().selectRecursosFromEmpresa(recursoEmpresaVO  );
            
//COLOCA RESULTADO DA CONSULTA NO BEAN 
session.setAttribute("recursoEmpresaMap", recursoEmpresaMap);

Agora para recuperar o valor no jsp é um pouco diferente do que com list:

<logic:present name="recursoEmpresaMap" scope="session">

<logic:iterate name="recursoEmpresaMap" id="recursoEmpresaMap" >" >


<bean:write name="recursoEmpresaMap"  property="value.nom_usuario"/>
<bean:write name="recursoEmpresaMap" property="value.des_email"/>
...

Observe que diferentemente do List vc deve colocar a palavra “value”

Criado 17 de fevereiro de 2005
Ultima resposta 17 de fev. de 2005
Respostas 3
Participantes 3