Boa tarde, há dias estou tentando desenvolver um projeto onde tenho um template.xhtml, listaProfissionais, cadProfissionais este contendo um TabView, em uma das tabs listarei todos os seus empregos, até ai tudo bem.
Neste emprego tenho um botão para incluir, alterar, excluir (<p:commandButton) ai que começou o problema, quando chama o dialog ele não atualiza os dados, só um comentário fiz esta parte de listar os empregos + dialog em páginas separadas sem usar o template tudo funciona, o que acham? segue abaixo meus códigos.
Template.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title><ui:insert name="title">Sistema de recrutamento</ui:insert>
</title>
<link
href="#{facesContext.externalContext.requestContextPath}/default.css"
rel="stylesheet" type="text/css" />
</h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="top" height="70">
<ui:insert name="cabecalho">
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="left" width="170" header="Menu">
<ui:insert name="menu">
<ui:include src="paginaMenu.xhtml" />
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center">
<ui:insert name="centro">
</ui:insert>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
cadProfissionais.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<ui:composition template="template.xhtml">
<ui:define name="centro">
<h:form prependId="false">
<p:tabView style="display: inline-block; width: 99%">
<p:tab title="Cadastro">
<p:growl id="growl" showDetail="false" />
<h:panelGrid id="tabela" columns="2" cellpadding="0">
<h:outputLabel id="lblData" value="Atualização" for="txtData" />
<h:outputText id="txtData"
value="#{profissionalMB.profissional.dataCadastro}">
<f:convertDateTime dateStyle="short" />
</h:outputText>
<h:outputText value="Ativo" />
<h:selectOneMenu value="#{profissionalMB.profissional.situacao}">
<f:selectItem itemValue="0" itemLabel="Inativo" />
<f:selectItem itemValue="1" itemLabel="Ativo" />
</h:selectOneMenu>
<h:outputLabel id="lblCodigo" value="Código" for="txtCodigo" />
<h:outputFormat id="txtCodigo" disabled="true"
value="#{profissionalMB.profissional.id}" />
<h:outputLabel id="lblNome" value="Nome" for="txtNome" />
<p:inputText id="txtNome"
value="#{profissionalMB.profissional.nome}" style="width:350px" />
<h:outputLabel id="lblPeso" value="Peso" for="txtPeso" />
<p:inputText id="txtPeso"
value="#{profissionalMB.profissional.peso}" style="width:50px" />
<h:outputLabel id="lblAltura" value="Altura" for="txtAltura" />
<p:inputText id="txtAltura"
value="#{profissionalMB.profissional.altura}" style="width:50px" />
<h:outputLabel id="lblCpf" value="CPF" for="txtCPF" />
<p:inputText id="txtCPF" disabled="true"
value="#{profissionalMB.profissional.cpf}" style="width:150px" />
<h:outputText value="Sexo" />
<h:selectOneMenu value="#{profissionalMB.profissional.sexo}">
<f:selectItem itemValue="M" itemLabel="Masculino" />
<f:selectItem itemValue="F" itemLabel="Feminino" />
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid id="tabela2" columns="5" cellpadding="0">
<h:outputLabel id="lblIdade" value="Idade" for="txtIdade" />
<p:inputText id="txtIdade"
value="#{profissionalMB.profissional.idade}" style="width:25px" />
<h:outputLabel id="lblCep" value="Cep" for="txtCep" />
<p:inputMask id="txtCep"
value="#{profissionalMB.profissional.cep}" style="width:80px"
mask="99999-999" />
<p:commandButton value="Busca CEP" update="infoCep" type="push"
oncomplete="dialogBuscaCep.show();" image="ui-icon-search" />
</h:panelGrid>
<h:panelGrid id="tabela3" columns="2" cellpadding="0">
<h:outputLabel id="lblEndereco" value="Endereco" for="txtEndereco" />
<p:inputText id="txtEndereco"
value="#{profissionalMB.profissional.endereco}"
style="width:350px" />
<h:outputLabel id="lblComplemento" value="Complemento"
for="txtComplemento" />
<p:inputText id="txtComplemento"
value="#{profissionalMB.profissional.complemento}"
style="width:200px" />
<h:outputLabel id="lblBairro" value="Bairro" for="txtBairro" />
<p:inputText id="txtBairro"
value="#{profissionalMB.profissional.bairro}" style="width:250px" />
<h:outputLabel id="lblCidade" value="Cidade" for="txtCidade" />
<p:inputText id="txtCidade"
value="#{profissionalMB.profissional.cidade}" style="width:250px" />
<h:outputLabel id="lblEstado" value="Estado" for="txtEstado" />
<p:inputText id="txtEstado"
value="#{profissionalMB.profissional.estado}" style="width:50px" />
<h:outputLabel id="lblRegiao" value="Região" for="txtRegiao" />
<p:inputText id="txtRegiao"
value="#{profissionalMB.profissional.regiao}" style="width:150px" />
<f:facet name="footer">
<h:panelGroup style="display:block; text-align:left">
<p:commandButton value="Gravar"
action="#{profissionalMB.salvar}" ajax="false" update="growl"
image="ui-icon-disk" />
<p:commandButton value="Fechar" ajax="false" immediate="true"
action="listaProfissionais.xhtml?faces-redirect=true" image="ui-icon ui-icon-close" />
</h:panelGroup>
</f:facet>
</h:panelGrid>
</p:tab>
<p:tab title="Cadastro II">
</p:tab>
<p:tab title="Cursos">
</p:tab>
<p:tab title="Empregos">
<ui:include src="listaProfEmpregos.xhtml" />
</p:tab>
<p:tab title="Habilidades">
</p:tab>
<p:tab title="Comp/Vagas">
</p:tab>
<p:tab title="Observações">
</p:tab>
<p:tab title="Internet">
</p:tab>
<p:tab title="Internas">
</p:tab>
<p:tab title="Parecer Psicológico">
</p:tab>
</p:tabView>
</h:form>
<p:dialog header="Localizar CEP" widgetVar="dialogBuscaCep"
appendToBody="true" resizable="false" modal="true" showEffect="slide"
width="500">
<h:form prependId="false">
<p:focus />
<h:panelGrid id="infoCep" columns="4" style="margin-bottom:10px">
<h:outputLabel for="txtCepBusca" value="Cep:" />
<p:inputMask id="txtCepBusca" value="#{profissionalMB.numeroCep}"
style="width:100px" mask="99999-999" />
<p:commandButton update="resultCep"
action="#{profissionalMB.buscaCep}" value="Pesquisar" />
<p:commandButton update="tabela"
oncomplete="dialogBuscaCep.hide();" value="Fechar" />
</h:panelGrid>
<h:panelGrid id="resultCep" columns="2" style="margin-bottom:10px">
<h:outputLabel id="lblEnderecoX" value="Endereco"
for="txtEnderecoX" />
<p:inputText id="txtEnderecoX" value="#{profissionalMB.enderecoX}"
style="width:350px" />
<h:outputLabel id="lblBairroX" value="Bairro" for="txtBairroX" />
<p:inputText id="txtBairroX" value="#{profissionalMB.bairroX}"
style="width:250px" />
<h:outputLabel id="lblCidadeX" value="Cidade" for="txtCidadeX" />
<p:inputText id="txtCidadeX" value="#{profissionalMB.cidadeX}"
style="width:200px" />
<h:outputLabel id="lblEstadoX" value="Estado" for="txtEstadoX" />
<p:inputText id="txtEstadoX" value="#{profissionalMB.estadoX}"
style="width:50px" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
</html>
Aqui onde começam os problemas
listaProfEmpregos.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:form id="formLista">
<p:growl id="alerta" />
<p:dataTable id="tabProfEmpre"
value="#{profissionalEmpregoMB.empregos}" var="emp"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
emptyMessage="Nenhum registro encontrado">
<f:facet name="header">
<h:outputText value="Lista de Empregos" />
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="id" />
</f:facet>
<h:outputText value="#{emp.id}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Empresa" />
</f:facet>
<h:outputText value="#{emp.empresa}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Data Inicio" />
</f:facet>
<h:outputText value="#{emp.dataEntrada}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Data Término" />
</f:facet>
<h:outputText value="#{emp.dataSaida}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Cargo" />
</f:facet>
<h:outputText value="#{emp.cargo.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Salário" />
</f:facet>
<h:outputText value="#{emp.salario}" align="right">
<f:convertNumber minFractionDigits="2" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alterar" />
</f:facet>
<p:commandButton value="editar" oncomplete="dialogEmpregos.show();"
immediate="false" update="formEmprego:infoEmpregos" ajax="true"
action="#{profissionalEmpregoMB.editar}"
image="ui-icon ui-icon-pencil">
</p:commandButton>
</p:column>
<f:facet name="footer">
<p:commandButton value="Adicionar novo emprego"
onclick="dialogEmpregos.show();" immediate="false"
action="#{profissionalEmpregoMB.novoEmprego}"
update="formEmprego:infoEmpregos" ajax="true"
image="ui-icon ui-icon-circle-plus" />
</f:facet>
</p:dataTable>
</h:form>
<p:dialog header="Cadastro de Empregos" widgetVar="dialogEmpregos"
onCloseUpdate="formLista:tabProfEmpre" position="center"
appendToBody="true" resizable="false" modal="true" showEffect="slide"
width="630" height="280">
<h:form id="formEmprego">
<h:panelGrid id="infoEmpregos" columns="2">
<h:outputLabel for="txtEmpresa" value="Empresa:" />
<p:inputText id="txtEmpresa"
value="#{profissionalEmpregoMB.emprego.empresa}" style="width:350px" />
<h:outputLabel for="txtDatainicio" value="Data ínicio:" />
<p:inputMask id="txtDatainicio"
value="#{profissionalEmpregoMB.emprego.dataEntrada}"
style="width:100px" mask="99/99/9999">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:inputMask>
<h:outputLabel for="txtDatatermino" value="Data Término" />
<p:inputMask id="txtDatatermino"
value="#{profissionalEmpregoMB.emprego.dataSaida}"
style="width:100px" mask="99/99/9999">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:inputMask>
<h:outputLabel for="txtSalario" value="Salário:" />
<p:inputText id="txtSalario"
value="#{profissionalEmpregoMB.emprego.salario}" style="width:100px">
<f:convertNumber minFractionDigits="2" />
</p:inputText>
<h:outputLabel for="txtCargo" value="Cargo:" />
<h:selectOneMenu id="txtCargo"
value="#{profissionalEmpregoMB.emprego.cargo.id}"
style=" width : 502px;">
<f:selectItems value="#{profissionalEmpregoMB.cargos}" />
</h:selectOneMenu>
<f:facet name="footer">
<p:commandButton update="formLista:alerta, formLista:tabProfEmpre"
image="ui-icon-save" onclick="dialogEmpregos.hide();"
immediate="false" ajax="true"
action="#{profissionalEmpregoMB.salvar}" value="Gravar" />
<p:commandButton onclick="dialogEmpregos.hide();" immediate="false"
ajax="true" update="tabProfEmpre" image="ui-icon-close"
value="Fechar" />
</f:facet>
</h:panelGrid>
</h:form>
</p:dialog>
<h:messages />
</html>
Já fiz com commandLink, já coloquei o dialog em um xhtml a parte, enfim nada, um detalhe importante somente funciona com ajax=“true”, pois estou usando o primefaces-3.0.M1 - JSF2, pois nestas duas semanas de buscas, erros e tentativas com dicas e sugestões nada, ai resolvi postar pedindo ajuda.
Entendam que estou iniciando este projeto, rsrrs, agradeço as dicas.
Abraços
César