Aew galera a uns tempos atras tinha feito um exemplo com RichFaces + Facelets + JSF 1.2 com layouts e menu que altera a pagina do centro com o reRender, mas agora estou utilizando o Primefaces e JSF 2 e estou com duvidas em como fazer um layout fixo com um menu a esquerda e um centro (corpo) onde de acordo com a opção do menu selecionada eu altero a pagina sem recarregar a pagina, vou mostrar como estou fazendo e gostaria de saber oq estou fazendo de errado.
menu.xhtml<h:body>
<ui:composition>
<h:form>
<p:menu model="#{menuController.model}"/>
<h:outputLink value="#{facesContext.externalContext.requestContextPath}/j_spring_security_logout">
<h:outputText value="Sair"/>
</h:outputLink>
</h:form>
</ui:composition>
</h:body>
<h:body>
<p:layout fullPage="true" >
<p:layoutUnit position="left" width="200" header="Menu" resizable="false" closable="false" collapsible="true">
<ui:insert name="menu">
<ui:include src="menu.xhtml" />
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center">
<ui:insert name="content" />
</p:layoutUnit>
</p:layout>
</h:body>
<h:body>
<ui:composition template="./templates/template.xhtml">
<ui:define name="content">
<p:panel id="corpo">
<ui:include src="#{menuController.menuSelected}"/>
</p:panel>
</ui:define>
</ui:composition>
</h:body>
@ManagedBean(name = "menuController")
@ViewScoped
public class MenuController {
private MenuModel model;
private String menuSelected = "corpo/grid_usuario.xhtml";
public MenuController() {
model = new DefaultMenuModel();
Submenu subMenu = new Submenu();
subMenu.setLabel("Cadastro");
//Empresa
MenuItem item = new MenuItem();
item.setValue("Empresa");
item.setUrl("corpo/grid_empresa.xhtml");
item.setAjax(true);
item.setUpdate("corpo");
subMenu.getChildren().add(item);
//Usuario
item = new MenuItem();
item.setValue("Usuário");
item.setUrl("corpo/grid_usuario.xhtml");
item.setAjax(true);
item.setUpdate("corpo");
subMenu.getChildren().add(item);
model.addSubmenu(subMenu);
}
public MenuModel getModel() {
return model;
}
public String getMenuSelected() {
return menuSelected;
}
Mas quando clico no menu ele me linka para o caminho corpo/grid_empresa.jsf e vem sem o layout do facelets, eu preciso que ele jogue por ajax a pagina no corpo como se fosse um frame do html mas em ajax o que estaria errado?
Obrigado.