Pessoal reparei que quando tento trabalhar com Include dinâmico qualquer que seja o formulário chamado na página que foi incluida
não funciona. O botões perdem as ações, tanto faz se é um h:commandButton ou botão do primefaces com ajax.
Isso tem solução ? Queria fazer um sistema nesse molde, que quando o usuario seleciona uma opção no menu, somente
parte do corpo da página é atualizada com esse include. veja abaixo:
[color=darkblue]CÓDIGO DA PÁGINA PRINCIPAL[/color]
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<ui:composition template="/templates/_template.xhtml">
<ui:define name="corpo">
<h:form id="formMenu">
<p:growl showDetail="true" sticky="true"/>
<p:menubar>
<p:submenu label="Iniciar">
<p:menuitem value="Início" actionListener="#{menuController.setPrincipal}" update="outputPanelConteudo" />
<p:menuitem value="Logout" actionListener="#{loginBean.doLogout}" ajax="false"/>
</p:submenu>
<p:submenu label="Cadastro">
<p:menuitem value="Usuários" actionListener="#{menuController.setUsuario}" update="outputPanelConteudo"/>
<p:menuitem value="Questões" actionListener="#{menuController.setQuestao}" update="outputPanelConteudo"/>
<p:menuitem value="Compilação" actionListener="#{menuController.setCompilacao}" update="outputPanelConteudo"/>
<p:menuitem value="Professores" actionListener="#{menuController.setProfessor}" update="outputPanelConteudo"/>
<p:menuitem value="Disciplinas" actionListener="#{menuController.setDisciplina}" update="outputPanelConteudo"/>
</p:submenu>
<p:submenu label="Configurações">
<p:menuitem value="Sobre o Sistema"/>
</p:submenu>
</p:menubar>
</h:form>
<p:outputPanel id="outputPanelConteudo">
<ui:include src="#{menuController.paginaAtual}"/>
</p:outputPanel>
[color=blue]BEAN QUE CONTROLA OPÇÃO SELECIONADA NO MENU[/color]
package com.teste.mb;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
@SessionScoped
@ManagedBean
public class MenuController implements Serializable {
private static final long serialVersionUID = -8567686474409512966L;
private String paginaAtual;
public void setPaginaAtual(String paginaAtual) {
this.paginaAtual = paginaAtual;
}
public String getPaginaAtual() {
return paginaAtual;
}
public void setPrincipal(){
setPaginaAtual("mainpage.xhtml");
}
public void setProfessor(){
setPaginaAtual("professor");
}
public void setQuestao(){
setPaginaAtual("questao");
}
public void setDisciplina(){
setPaginaAtual("disciplina.xhtml");
}
public void setCompilacao(){
setPaginaAtual("compilacao");
}
public void setUsuario(){
setPaginaAtual("usuario.xhtml");
}
}
[color=darkblue]PÁGINA QUE QUERO INCLUIR. <h:include> da página principal[/color]
<h:body>
<h:form id="formUsuarioCad">
<p:panel id="xota" closable="true" header="Cadastro de Usuário">
<h:panelGrid columns="2">
<h:outputLabel value="Código:" rendered="#{usuarioBean.usuario.id != null}"/>
<p:inputText id="codigo" value="#{usuarioBean.usuario.id}"
rendered="#{usuarioBean.usuario.id != null}"/>
<h:outputLabel value="Nome p/ Login:" />
<p:inputText id="login" required="true" value="#{usuarioBean.usuario.login}"
requiredMessage="Campo [Nome p/ login] obrigatório" />
<h:outputLabel value="Senha:" />
<p:password value = "#{usuarioBean.usuario.senha}"
minLength="6" promptLabel="Digite uma senha segura"
goodLabel="Boa" weakLabel="Razoável" strongLabel="Excelente" />
<h:commandButton value = "Salvar com ajax externo" action = "#{usuarioBean.grava}">
<!-- <f:ajax execute="@form" render="@form"/>-->
</h:commandButton>