Olá pessoal! Estou querendo migrar do primefaces 3.0 para o 3.1 só que estou com um problema com o componente growl. Se atualizo o jar para o primefaces 3.1, ele lança uma exception em algumas páginas dizendo que não encontrou o componente com id growl e em outras ele não fala nada e funciona normalmente o growl. Alguém passou por isso? Eu li no blog que agora os componentes que não encontram com o id ele lançam uma exceção, mas no prime 3.0 ele encontra normalmente e no 3.1 em algumas páginas encontram também.
E ae esdras_63
Este erro indica que o método findComponent não pode encontrar o id informado na view.
O que você precisa prestar atenção é ver em qual container estao seus componentes, o que lança o ajax e o que é atualizado.
Se estiver no mesmo outputpanel por exemplo é só indicar o nome(o que acredito não ser o seu caso).
Se estiver em outro vc deve começar a usar “:” antes dos id de seus componentes lembrando que o “:” indica que você esta começando a pesquisa da raiz de seus componentes.
Por exemplo:
Exemplo 1:
<h:form id="formularioPrincipal">
<p:growl id="growl" sticky="true" />
<p:outputpanel id="painel">
<p:commandButton value="Teste AJAX" actionListener="#{managedBean.Atualizar}" update=":formularioPrincipal:growl"/>
</p:outputpanel>
</h:form>
Exemplo 2:
<p:growl id="growl" sticky="true" />
<h:form id="formularioPrincipal">
<p:outputpanel id="painel">
<p:commandButton value="Teste AJAX" actionListener="#{managedBean.Atualizar}" update=":growl"/>
</p:outputpanel>
</h:form>
O problema parece que é alguma coisa que faz referencia ao ID growl.
Reveja o xhtml da página e veja se em algum lugar tem algo do tipo:
update="growl"
De alguma forma deve está referenciando esse ID e ele nao existe na página.
Acho que o problema é o dos “:” mesmo. Porque eu tenho em meu template uma div chamada conteudo e já deixo lá o growl. E os botões que estão dando update no growl estão em conteudo e depois em um form. Então para referenciar o growl eu teria que utilizar :conteudo:growl ?? ou apenas :growl? Pois o conteudo é uma div.
Sem visualizar o código fica um pouco complicado, mas imaginando do jeito que foi informado por você, apenas o :growl resolveria.
Não estou conseguindo ainda.
Containers significa apenas os forms ?