| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2008 15:34:42
|
Rafael Rossignol
Java Ninja
![[Avatar]](/images/avatar/c8a869974092410b06e66.gif)
Membro desde: 17/02/2004 09:26:58
Mensagens: 257
Offline
|
Seguinte pessoal, tem alguns componentes que criei utilizando este tutorial.
http://bigallan.blogspot.com/2008/02/creating-custom-jsf-message-component.html
Eles sempre funcionaram, até que há pouco tempo eu separei minha aplicação em algumas (antes era tudo uma coisa só), o que não deveria interferir nisso.
O Fato é que aproveitei pra mexer no cabeçalho dos web deployers (web.xml) que estava para a versão 2.4 e coloquei tudo 2.5
O lance é que o erro ocorre apenas em algumas páginas que utilizam o meu componente, foi então que vi a linha que causava o erro, era uma linha do facelets, então baixei o fonte do facelets e fui debugar
nos anexos segue um passo a passo das coisas que conferi inumeras vezes e não me conformo por que isso da erro
Na imagem um vocês podem ver a linha que gera o exception, é um illegalArgumentException
http://geocities.yahoo.com.br/rafaelrfelipe/dossie/1_linhaProblematica.jpg
O que essa linha faz nada mais é do que chamar o metodo setForId do meu componente via reflection
na imagem 2 vocês podem ver que o valor passado está correto, a assinatura do metodo aceita só um argumento do tipo string, logo o valor é um Object[] e o primeiro elemento é um String.
http://geocities.yahoo.com.br/rafaelrfelipe/dossie/2_atributoValue.jpg
Na imagem 3 vocês podem ver que o atributo passado é uma instancia da minha classe, que possui o atributo forId (que é String)
http://geocities.yahoo.com.br/rafaelrfelipe/dossie/3_instance.jpg
Na imagem 4 vocês podem ver a instancia do objeto que representa o metodo da classe, como podem reparar, a assinatura do método é compatível, retorna void e recebe uma unica string
http://geocities.yahoo.com.br/rafaelrfelipe/dossie/4_method.jpg
Na imagem 5 o exception que essa execução gera
http://geocities.yahoo.com.br/rafaelrfelipe/dossie/5_exception.jpg
e na imagem 6 o erro q sai na tela
http://geocities.yahoo.com.br/rafaelrfelipe/dossie/6_telaErro.jpg
será que alguém tem alguma idéia do que posso fazer pra tentar fazer esse erro parar de acontecer?
Primeiro imaginei que poderia ser versão do java, pois o jar que contém o componente tinha sido compilado para ser compatível com a versão 1.6 e a aplicação que o usava estava configurada pra rodar usando 1.5 compatibility, mas então troquei tudo de tudo pra 1.6, fiz 512 mil cleans diferentes pra não ter erro de ser cache e não resolveu! Coloquei todas as classes do meu componente como serializaveis e declarei o serialVersionID gerado pelo eclipse, achando que assim ele poderia entender a compatibilidade de classes (sei lá, to desesperado já)
qualquer sugestão é bem vinda
Na maquina de um outro rapaz daqui onde trabalho, uma página onde o componente funciona aqui, não funciona lá. E as que não funcionam aqui, funcionam lá!
Diferenças entre as duas, uso o eclipse ganymede ele usa o europa, o tomcat foi copiado do meu, mas não sei dizer se desde que ele copiou mudou algo. Acho q vou fazer ele copiar o meu de novo pra ver no que dá.
Acabei de fazer um teste aqui:
Faz praticamente a mesma coisa que a linha que da erro, mas funciona, isso ta num metodo main!
|
"A Imaginação é mais importante que o Conhecimento"
Albert Einstein |
|
|
 |
|
|
|
|
|
|