JSF 2 Template: Carregar template uma vez

Eu tenho um sistema onde suas páginas contêm um template. Este template contém um menu, que é carregado toda vez que eu navego nas páginas do sistema. Preciso que seja carregado apenas uma vez, depois de fazer login.

menuprincipal.xhtml

<h:body style="-rave-layout: grid; background-color: #97aebe">
...
<h:form id="frmenu"> 
<p:menubar height="10px" width="100%" style="font-size:11px">                                                       
<p:submenu rendered="#{MenuPrincipal.permissaoFuncao('TR200')}" label="Tabelas" icon="ui-icon-calculator">
</p:menubar>
</h:form>
<ui:insert name="corpo-da-pagina"> </ui:insert>
...
</h:body>

ocorrencia.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" >
...    
<ui:define name="corpo-da-pagina">
...
<h:form id="form" preprendId="false" rendered="#{MenuPrincipal.permissaoFuncao('TR209')}">
...
</h:form>
</ui:define>
</ui:composition>

Você pode mudar o escopo para SessionScoped ou fazer um SPA

Meu MB MenuPrincipal já está com SessionScope. Você tem algum exemplo do SPA com o JSF 2 ?

Talvez aqui:
https://fernandofranzini.wordpress.com/category/jsf/

Mas não sei, ja que a empresa bloqueou o meu acesso…

Basicamente no ui:include você teria que apontar uma url que estaria em um atributo do bean

Padrão (NO SPA)

<ui:include src="/cadastro-usuario.xhtml" />

SPA

<ui:include src="#{trocaPaginaBean.paginaAtual}" />
private String paginaAtual = "/cadastro-usuario.xhtml";

Toda vez que você navegar, você seta um valor para o atributo paginaAtual e da um update no componente pai

SPA:

<p:outputPanel id="panel-content">
    <ui:include src="#{trocaPaginaBean.paginaAtual}" />
</p:outputPanel>
<p:commandButton value="Ir para pagina X" actionListener="#{bean.irParaPaginaX()}" update=":panel-content" process="@this" />