Duplicate component ID - JSF

Estou com um problema grosso no JSF, o famoso: “java.lang.IllegalStateException: Duplicate component ID”.

Creio que isso seja um bug do framework, em alguns momentos este erro aparece, principalmente em criação de conteúdo dinâmico.

Quando cria-se a árvore é criado alguns componentes no server “O framework cria por conta própria”. O fato é: Ele se perde com os próprios componentes que cria gera uma exception que em cascata gera erro de Javascript(No cliente) impossibilitando execução da iteração do cliente.

A forma de gerenciamento do JSF é muito ruim, eles poderiam ter inventado outra forma de gerenciar este tipo de ligação!

O Struts é perfeito, a maturidade deste framework é fantástica, existem muitas críticas, principalmente pelo fato de existir um arquivo de configuração struts-config.xml. Não acho isso uma barreira, em comparação aos benefícios!!!

Muita gente o crítica, por muitos outros motivos, principalmente pela dificuldade de aprendizado que alguns desenvolvedores encontram(Ea o cara pega o webwork, por ser mais fácil de aprender achando o sonho da vida dele)

Mais voltando ao assunto, alguém conseguiu uma solução este problema???

Até mais,

O tempo de processamento da JSTL é diferente da JSF. Sendo assim pode ocorrer duplicidade de componentes id na montagem da árvore. Não existe uma correção, isso é um erro grosso que irá permanecer o resto de suas vidas. Solução, não sei se é solução utilizar um framework para acabar com problemas de outros.

“Utilizem facelets”, a tag “repeat” deve ser utilizada lo lugar se “forEach”

<ui:repeat var=“bean” value="#{lista}">

no caso do c:if implemente com.sun.facelets.tag.TagHandler pois não existe compatível.

Por essa e outras coisas prefiro o STRUTS

Seria bom que implementasse um método para que concatenasse o id anterior com um contador qualquer… assim vc nunca terá um id duplicado quando expô-lo na tela.

por exemplo o método

public void geraTexto() {
    HtmlOutputText aux = criaObjeto();
    aux.setId("a"+System.currentTimeMillis());
    aux.setValue("Criou!");
    panelGroup1.getChildren().add(aux);
}

gera varios “Criou!” em um panelGroup, randomizando um ID…

assim, não terá mais problemas