É 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!
VanessaVanessaVanessaVanessaVanessaVanessa
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é
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,