Problema com localização de "id" no f:ajax!

O código abaixo roda normalmente até a versão 2.1 do Mojarra (Mojarra JSF API Implementation 2.1.1 (20110408-FCS))

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form prependId="false">

            <h:panelGroup id="opnDtb">
                
                <h:dataTable id="dtb">

                    <f:facet name="header">
                        <h:commandButton value="Update">
                            <f:ajax execute="@this"
                                    render="opnDtb"/>
                        </h:commandButton>
                    </f:facet>
                    
                </h:dataTable>
                
            </h:panelGroup>

        </h:form>
    </h:body>
</html>

No entanto ao atualizar para uma versão 2.1.6 começou ocorrer o seguinte erro:

Como o projeto oficial possui várias referências de CSS a ids, mudar o prependId de false para true fica inviável. Tenho certeza que não há nomes duplicados na renderização das páginas portanto o prependId não deveria ser a causa do problema.

Já tentei utilizar o render=“opnDtb” com “:” na frente do id, mas mesmo assim o erro continua. A única forma que foi possível resolver o problema foi sem a opção prependId e referenciando o nome completo do form+component precedido por “:”. Exemplo: render=":idForm:opnDtb"

nei.junior

Você conseguiu resolver este problema?

Olá Wender !

Sim, e a solução é que coloquei: “A única forma que foi possível resolver o problema foi sem a opção prependId e referenciando o nome completo do form+component precedido por “:”. Exemplo: render=”:idForm:opnDtb" ".

Este é o comportamento correto do JSF, se não for assim não funciona. Agora porque de não funcionar sem o id do form, ai teria que entender como funciona o método findComponent do JSF.

Abraço !

POr um momento havia achado que utilizar o caminho direto :form:id fosse uma função do PFs, não testei utilizando o ajax nativo do JSF.

Obrigado pela resposta.