Um aplicativo de página única em inglês “single-page application”, ou SPA é uma aplicação web ou site que consiste de uma única página web com o objetivo de fornecer uma experiência do usuário similar à de um aplicativo desktop. Em um SPA, todo o código necessário – HTML, JavaScript, e CSS – é obtido com um único carregamento de página, ou os recursos adicionais são carregados dinamicamente e adicionados à página conforme necessário, geralmente em resposta a ações do usuário.
SPA em JSF
JSF sendo um framework server side component base, é possível fazer SPA? Sim. Não se configura 100% da estratégia, mas funcionaria como algo muito parecido, desfrutando dos mesmos benefícios. Vamos ao segredos:
Crie uma página principal SPA que será usado como carga inicial. O segredo para que partes dinâmicas possam ser requisitas e renderizadas no DOM é usar o componente <ui:include>amarrado com uma propriedade String que conterá o endereço e nome do pedaço a ser dinamicamente processado.
Crie suas páginas JSF segmentadas com a porção de seus componentes web a ser dinamicamente carregados na pagina principal, sem a navegação completa de uma página HTTP:
Faça seu managed bean trocar o endereço das porções de páginas na propriedade String, conforme o usuário vai interagindo na solução, usando chamadas Ajax:
E assim, a cada iteração ajax, o managed bean troca o endereço das porções de páginas que é dinamicamente processado e alterado no DOM, usando todas as facilidades e charme que só o JSF pode oferecer.
Git
Esse projeto JSF usando paradigma SPA com primefaces 6 esta disponível no meu git.