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"