Problemas com primefaces 3.1 e Growl

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 ?