Problema propriedade update(Primefaces 3 + Facelets + IDs aninhados)

Alguém aqui está conseguindo trabalhar com PF3 + Facelets?

Usando updates parciais com a propriedade “update” dos comandos ajax, quando se tem um ID aninhado do tipo “panelGrid:jdt_57:inputTextNome” o comando update não funciona se você não colocar todo o id do componente que deseja atualizar.

No PF2 eu utilizava normalmente passando “:nomeDoComponente” (dois pontos + nome do componente), agora trabalhando com facelets (Templates, Components e Decorators) tem se tornado um inferno fazer os updates, pois estou tendo que ir no código fonte gerado para pegar o ID completo do componente que desejo atualizar…

Alguém sabe o motivo desse problema?

Coloque a propriedade prependId=false no seu form (ou em todos) e tente novamente.

Pode ser isso.

Tentei isso também. Não funfou.

Estou pensando seriamente em continuar na versão 2… :frowning:

Então pode ser o id do seu panelGrid que ta te pegando.

Oq é o componente jdt_57?

Na real, minhas telas são um pouco complexas em termos de componentes. Ainda mais com os templates e os decorators.

esse id ai “jdt_57” é um id que o render cria pra formar toda árvore de componentes. Ele faz isso pra evitar colisão de IDs. É normal que isso aconteça, o problema todo é que eu não deveria necessitar conhecer todo id do componente para dar um “refresh” nele…

Eu ainda voto num bug do PF ou em alguma coisa que estou esquecendo…

Caro Colega giulianocosta estou numa tarefa de migração do Prime Faces para a versão 3.0.1 e observei que realmente essa questão do update não está funcionando corretamente sem colocar todo o id do componente, mesmo colocando como prependId=“false” o update que antes funcionava deixou de funcionar.

Você conseguiu resolver esse problema ou continua com a versão 2 do Prime?

[quote=erasmo_tec]Caro Colega giulianocosta estou numa tarefa de migração do Prime Faces para a versão 3.0.1 e observei que realmente essa questão do update não está funcionando corretamente sem colocar todo o id do componente, mesmo colocando como prependId=“false” o update que antes funcionava deixou de funcionar.

Você conseguiu resolver esse problema ou continua com a versão 2 do Prime?[/quote]

Cara, foi um parto mas consegui fazer funcionar tudo que tinha no meu outro sistema. Mas tive que usar os IDs compostos para fazer funcionar. Não consegui de outra forma.

Outro problema que eu tinha é que possuo alguns “componentes” do facelets, estes caras colocavam um ID aleatório nos meus componentes finais(inputs, texts, selects, etc). A maneira que eu resolvi foi colocar ID no componente inteiro e solicitar o update dele ao invés de fazer update nos componentes que ele monta. Não sei se consegui ser claro neste ponto.

Qualquer dúvida estamos ai.

Sim, foi sim.

O que estou fazendo no momento é colocar os devidos ids nos componentes que faltavam e passar para o update o id composto mesmo.

Que maravilha, ainda bem que o sistema não é tão grande! sair criando ids e alterando seus updates é chato pra burro.