Erro com Cast de variavel de sessão

3 respostas
R

Há algo errado em fazer isto?

if((Integer) session.getAttribute("perfil_usuario")==1)

Porque eu estou fazendo e ele me dá um erro dizendo:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

O estranho é que já fiz exatamente a mesma coisa em outra aplicação, e deu certo. =S

3 Respostas

C

Boa tarde

Tente fazer:

if(((Integer) session.getAttribute("perfil_usuario")) == 1)

ou assim:

if(Integer.parseInt(String.valueOf(session.getAttribute("perfil_usuario"))) == 1)

Como você esta realizando um cast explicito para Integer, é necessário ter certeza que o valor vindo do atributo seja um Integer, vale lembra que o session.getAttribute retorna um Object.

Flw.

T
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Na mensagem já informa! Você está tentando fazer um cast de uma String para um Integer.

R

cvinicius…você me salvou cara.

A segunda opção foi a que deu certo.

O engraçado é que em outro sistema bem parecido que fiz, esse comando que eu utilizei funcionou perfeitamente bem.
Então eu resolvi olhar o que eu tinha feito de diferente na sessão do meu sistema que não tivesse sido feito no antigo sistema.
Achei então que, pelo fato de no novo sistema, em um certo momento eu guardo uma ArrayList em uma variável de sessão,
isso por algum motivo tivesse alterado a forma como se trabalhasse com a sessão. Porém, não era isso. Deixei de guardar essa
ArrayList e o erro persistiu.

A sua primeira sugestão, o erro persistiu. Já a segunda funcionou perfeitamente.

Muito obrigado cara. =D

Criado 18 de agosto de 2011
Ultima resposta 19 de ago. de 2011
Respostas 3
Participantes 3