JSF e renderização dos componentes e geração de IDs dos componentes

Bom dia pessoal!

Tudo bem com vocês?

Estou desenvolvendo com JSF e estou enfrentando algumas situações em que não estou tendo a capacidade de entender se é um problema efetivamente ou se é um bug, ou se é assim mesmo (o que duvido).

Fiz uma tela simples com JSF, RichFaces, Facelets e agora, Tomahawk (mas a situação que vou expor ocorria mesmo antes do Tomahawk). :shock:

A tela tem quatro campos de pesquisa, um botão pesquisar e um limpar.
Quando o usuário digita um filtro para a pesquisa, a tela funciona, ou seja, o meu MB acessa classes de modelo, recupera dados do banco e popula uma Collection que está associada a um DataTable, e o mesmo é “re-renderizado” com os dados.

Até aí tudo beleza, foi funciona maravilhosamente bem. :wink:

A questão é que as vezes (e repito, as vezes) ocorre de a minha página dar um erro de duplicate id nos componentes (em especial na tabela - DataTable). Esta tabela efetivamente possui um id na tag, que se chama “tabela”, que eu coloquei para poder manipular os “Re-Renders” do AJAX.

Só que as vezes este duplicate ID ocorre (por exemplo se eu tento pressionar F5 para Atualizar a página)… mas nem sempre… só as vezes… :?:

Estranho nao?

Um outro comportamento estranho está no fato de as vezes, alguns componentes nao serem renderizados (como se o servidor houvesse esquecido de renderizá-los)… e os componentes são renderizados novamente após o próximo submit… (por exemplo um dos campos de texto de pesquisa).

Alguem já passou por isso? Estou achando muito estranho, e nao poderei liberar a minha aplicação sem saber o que realmente está acontecendo. :frowning:

Só uma ressalva, a aplicação funciona… e em situações aleatórias (e não identificadas) este comportamento ocorre… não há mudança em uma linha de nada…

Abraços

ceduardo.roque

Também estou começando com JSF agora, mas especificamente usando a impl da sun, richfaces e facelets.

As vezes há erros aqui de renderização, mas isso as vezes pode ocorrer pelo estado do bean, estamos trabalhado com session scope.

Por que você colocou a data table component no bean? Aqui eu preencho ela de forma direta, as vezes pelo construtor (tela de seleção) ou então pelo método de retorno de uma lista, tudo por uma abstração própria.

Esse erro do ID duplicado já ocorreu comigo, mas não investiguei à respeito…com o tempo isso se resolvei sozinho!!!rs

[quote=Grinvon]Também estou começando com JSF agora, mas especificamente usando a impl da sun, richfaces e facelets.

As vezes há erros aqui de renderização, mas isso as vezes pode ocorrer pelo estado do bean, estamos trabalhado com session scope.

Por que você colocou a data table component no bean? Aqui eu preencho ela de forma direta, as vezes pelo construtor (tela de seleção) ou então pelo método de retorno de uma lista, tudo por uma abstração própria.[/quote]

Olá… eu também estou usando a mesma versão.

Acredito que o estado do bean possa estar relacionado, pois o meu também é Session scope.
Eu nao coloquei a minha data table component no bean. Para populá-la, eu preencho uma collection que está associada à tag dataTable, em seu atributo value.

De qualquer forma, obrigado. Vou tentar colocar o escopo como request pra ver se tem alguma diferença, mas creio que algumas ações pararão de funcionar.

Obrigado!

ceduardo.roque

pois é. Como o nosso amigo do post anterior falou, acho que pode ter a ver com o escopo do bean. Vou tentar alterar e ver no que dá.

Obrigado.

ceduardo.roque

ceduardo.roque, vamos la.

Existem alguns pontos a serem verificados quando existe esse problema:

1 - Como voce esta usando o layout da date (CSS) ?
PRob- Se voce estiver usando o componente do richface “template”, isso pode ocorrer pois ao atualizar a pagina voce não esta limpando ele do seu navegador e sim regarregando, assim o template é novamente carregado e poder dar o erro de duplication ID.

2 - Outro ponto inportante e que o scopo de request e session nao tem nada que possa influenciar nesse erro pois estando em session o que irá ficar em session sao os MBean e nao a pagina. Ja o request, voce só informa que ao submeter a pagia os conteudos do seu MBean serão apagados.

3 - Uma dica que dou é tente coloca o dataTable dentro de um .

Espero ter ajudado.

pace!!!

Cara essa bronca do ID ja aconteceu comigo, eu renome-ei o name do campo que estava dando bronca, e limpa o cahe pq se nao atualiza.