Atualizando programaticamente componentes JSF em requisições AJAX

É muito comum utilizarmos o componente p:outputPanel do Primefaces com o atributo autoUpdate=true quando queremos atualizar componentes automaticamente sempre que uma requisição AJAX é disparada por algum componente. Isso é mais comum ainda quando temos um template Facelets na qual as mensagens de sucesso e erro estão no topo da página.

O interessante é que podemos simular este mesmo comportamento de forma programática e sem a necessidade de um conjunto de componentes. Basta a nova API do JSF 2 responsável pela atualização parcial de páginas e requisições AJAX: PartialViewContext. Podemos ver como API funciona no código abaixo:

FacesContext.getCurrentInstance().getPartialViewContext()
            .getRenderIds().add(":mensagens");

Na verdade, a API do JSF 2 só nos permite atualizar o componente h:messages programaticamente. Para que o componente seja sempre atualizado a cada evento AJAX, nós podemos usar um PhaseListener, como discutido no novo post do blog da TriadWorks: Renderizando automaticamente componentes JSF em requisições AJAX.

Além da API PartialViewContext, a solução usa basicamente conceitos de PhaseListener e do ciclo de vida! Estes conceitos são estudados e praticados no curso de JSF 2 com Spring da TriadWorks.

Vale a pena a leitura!

3 Replies to “Atualizando programaticamente componentes JSF em requisições AJAX”

  1. VanessaVanessaVanessaVanessaVanessaVanessa

  2. Olá Rafael;

    Tenho uma aplicação JSF usando Primefaces 6.2 e gostaria de usar a renderização por estado.
    Como faço para usar com primefaces?
    Tenho tentado sem sucesso, atualizar um conteudo no LayoutUnit, apos clicar em um DefaulMenuItem.

    Cara, me da uma força!

    Atts;

    André

  3. Oi André,

    A lógica é a mesma independentemente da biblioteca de componentes que você usa. Na verdade, com JSF 2.x, você nem precisa de uma biblioteca, embora seja incomum não adotar alguma.

    Acho que não cheguei a trabalhar com LayoutUnit nem DefaulMenuItem, dessa forma recomendo você pedir ajuda no grupo de discussão de JSF: https://groups.google.com/forum/#!forum/javasf

    Com certeza muitos membros conhecem este componente e poderão te ajudar!

    Um abraço,

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s