Tenho uma página em composicao (ui:composition). Dentro dela, tenho um botao (p:commandButton) que no seu parâmetro oncomplete deve chamar um dialog (p:dialog).
Ele funciona no primefaces 4, porém estou migrando para a versão 6.2, e parou de funcionar.
Ele dá um erro no log do navegador
statusDialog is not defined
Segue abaixo meu código
<ui:composition ... >
<ui:define name="corpo-da-pagina">
<h:form id="form" preprendId="false">
<p:commandButton value="Adicionar" actionListener="#{EnPaisSB.prepararAdicionar}" style="font-size: 10px" oncomplete="PF('man').show();" update="@form" />
<p:dataTable ...></p:dataTable>
<p:dialog modal="true" header="Manutencao" widgetVar="man" resizable="true" width="500" id="dialog" closable="false">...</p:dialog>
</h:form>
</ui:define>
</ui:composition>
Cara, talvez este componente não esteja em um contexto onde o commandButton o encontre ou o id gerado é diferente. São problemas muito comuns no jsf desde muito tempo
acabei de fazer um teste usando um p:commandButton sem fazer nada.
<p:commandButton value="teste" />
e o erro no console do navegador continua.
Será que é algum bug da versão?
Percebi que tem esse comportamento nas versões 5, 6 e 7 do primefaces.
Na versão 4 funciona normalmente
Veja o html gerado, clica com o botão direito do mouse sobre qualquer componente e verifica qual é o modo como o id final é gerado.
Criei um botão agora (<p:commandButton value=“teste” />) e o erro no navegador continua o mesmo.
Será que é algum bug das versões?
Percebi que tem esse comportamento nas versões 5, 6 e 7 do primefaces.
Na versão 4 funciona normalmente
No navegador o botão está assim
<button id="form:j_idt110" name="form:j_idt110" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="PrimeFaces.ab({s:"form:j_idt110",u:"form",onco:function(xhr,status,args){PF('man').show();;}});return false;" style="font-size: 10px" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Adicionar</span></button>
É o padrão para o primefaces, ele sempre inclui o form antes do id que você definiu.
Chegou a verificar se o id do tal dialog é o mesmo apresentado no dialog e no oncomplete?
Eu não consigo abrir o dialog com a versão 5, 6 ou 7 do primefaces.
Usei a versão 4 e consegui ver o ID do dialog (form:dialog)
Mas o dialog está lá no html gerado. Ele fica lá e quando o oncomplete é invocado, ele apenas remove o display: none por display:block (ou similar).
é verdade Darlan, desculpa.
O id é o mesmo (form:dialog)
O estranho é que eu criei um botão sem action, onclick, oncomplete. E mesmo assim ele dispara esse erro no console do navegador
Criei uma tela de exemplo que tem um p:commandButton que chama o p:dialog e funcionou.
Acontece que minha tela “TblEnPais.xhtml” é uma composição de um template “MenuPrincipal.xhtml” e causa esse erro.
Descobri o problema, é meu template.
Como é uma aplicação legada, o template “MenuPrincipal.xhtml” é uma bagunça.
Criei um template e composição de teste e usei o commandButton chamando o dialog e funcionou.