[Resolvido] Editar objeto com Dialog (Primefaces)

20 respostas
T

Bom dia pessoal.

Iniciei a pouco tempo meus estudos sobre jsf e primefaces e estou com um problema que não estou conseguindo solucionar, editar um objeto em um dialog, basicamente, é carrega-lo no dialog.
Estou usando um data table com selection single mode. O objeto e clicar em uma das linhas (objeto) e, em seguida, clicar no botão editar e, então, o dialog carregaria uma janela para a edição das informações deste objeto, acontece que o dialog não carrega este objeto.

Montei um pequeno exemplo para mostrar meu problema mais facilmente,

Abaixo, minha class teste.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui">

<ui:composition template="/_template.xhtml">

	<ui:define name="corpo">
		
		<h:form id="form">
		
			<p:tabView>
			
				<p:tab title="teste">
				
					<fieldset>
					
						<legend>Tabela Teste</legend>
						
						<p:dataTable id="teste" var="teste" value="#{testeBean.testes}" selectionMode="single" 
							selection="#{testeBean.teste}" rowKey="#{teste.id}"  >
						
							<p:column id="descricao" filterBy="#{teste.descricao}" >
								<h:outputText value="#{teste.descricao}" />
							</p:column>						
						
						</p:dataTable>
						
						<p:commandButton id="novo" value="Novo" onclick="novoDialogo.show()" type="button" />
						<p:commandButton id="editar" value="Editar" onclick="novoDialogoEdit.show()" type="button" >
							<f:ajax render="modalTesteEditar" execute="@form" />
						</p:commandButton>
						
						<p:dialog id="modalTesteNovo" header="Teste Modal" widgetVar="novoDialogo" modal="true" dynamic="true" >
							<h:outputText value="Descrição: " />
							<p:inputText value="#{testeBean.teste.descricao}" />
							
							<p:commandButton value="Salvar" action="#{testeBean.grava}" oncomplete="novoDialogo.hide()" onclick="teste" >
								<f:ajax execute="@this" render="@form" />
							</p:commandButton>
						</p:dialog>		
						
						<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >
							
							<h:outputText value="#{testeSelecionado.descricao}" />
							
						</p:dialog>										
																					
					</fieldset>
				
				</p:tab>
			
			</p:tabView>
		
		</h:form>
		
	</ui:define>

</ui:composition>

</html>

Aqui esta meu ManagedBean:

package br.com.enterprisestoq.bean;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.enterprisestoq.dao.DAO;
import br.com.enterprisestoq.modelos.Teste;

@ManagedBean
@ViewScoped
public class TesteBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Teste teste = new Teste();
	private Teste testeSelecionado;
	private List<Teste> testes;
	
	public String grava(){
		DAO<Teste> dao = new DAO<Teste>(Teste.class);
		dao.adiciona(teste);
		this.teste = new Teste();
		return "teste";
	}
		
	public Teste getTeste() {
		return teste;
	}

	public void setTeste(Teste teste) {
		this.teste = teste;
	}

	public List<Teste> getTestes() {
		DAO<Teste> dao = new DAO<Teste>(Teste.class);
		this.testes = dao.listaTodos();
		return this.testes;
	}

	public void setTestes(List<Teste> testes) {
		this.testes = testes;
	}

	public Teste getTesteSelecionado() {
		return testeSelecionado;
	}

	public void setTesteSelecionado(Teste testeSelecionado) {
		this.testeSelecionado = testeSelecionado;
	}

}

O que estou fazendo de errado? Ja tentei seguir o exemplo dos cases do site do primefaces, porém o resultado é o mesmo.

Muito obrigado.

20 Respostas

L

Bom dia!

Cara, em qual dos commandButton esta dando errado? Nos dois?
Ele exibe o Dialog, nos dois casos, mas sem valor?

[]'s

ThEDiegO:
Bom dia pessoal.

Iniciei a pouco tempo meus estudos sobre jsf e primefaces e estou com um problema que não estou conseguindo solucionar, editar um objeto em um dialog, basicamente, é carrega-lo no dialog.
Estou usando um data table com selection single mode. O objeto e clicar em uma das linhas (objeto) e, em seguida, clicar no botão editar e, então, o dialog carregaria uma janela para a edição das informações deste objeto, acontece que o dialog não carrega este objeto.

Montei um pequeno exemplo para mostrar meu problema mais facilmente,

Abaixo, minha class teste.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui">

<ui:composition template="/_template.xhtml">

	<ui:define name="corpo">
		
		<h:form id="form">
		
			<p:tabView>
			
				<p:tab title="teste">
				
					<fieldset>
					
						<legend>Tabela Teste</legend>
						
						<p:dataTable id="teste" var="teste" value="#{testeBean.testes}" selectionMode="single" 
							selection="#{testeBean.teste}" rowKey="#{teste.id}"  >
						
							<p:column id="descricao" filterBy="#{teste.descricao}" >
								<h:outputText value="#{teste.descricao}" />
							</p:column>						
						
						</p:dataTable>
						
						<p:commandButton id="novo" value="Novo" onclick="novoDialogo.show()" type="button" />
						<p:commandButton id="editar" value="Editar" onclick="novoDialogoEdit.show()" type="button" >
							<f:ajax render="modalTesteEditar" execute="@form" />
						</p:commandButton>
						
						<p:dialog id="modalTesteNovo" header="Teste Modal" widgetVar="novoDialogo" modal="true" dynamic="true" >
							<h:outputText value="Descrição: " />
							<p:inputText value="#{testeBean.teste.descricao}" />
							
							<p:commandButton value="Salvar" action="#{testeBean.grava}" oncomplete="novoDialogo.hide()" onclick="teste" >
								<f:ajax execute="@this" render="@form" />
							</p:commandButton>
						</p:dialog>		
						
						<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >
							
							<h:outputText value="#{testeSelecionado.descricao}" />
							
						</p:dialog>										
																					
					</fieldset>
				
				</p:tab>
			
			</p:tabView>
		
		</h:form>
		
	</ui:define>

</ui:composition>

</html>

Aqui esta meu ManagedBean:

package br.com.enterprisestoq.bean;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.enterprisestoq.dao.DAO;
import br.com.enterprisestoq.modelos.Teste;

@ManagedBean
@ViewScoped
public class TesteBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Teste teste = new Teste();
	private Teste testeSelecionado;
	private List<Teste> testes;
	
	public String grava(){
		DAO<Teste> dao = new DAO<Teste>(Teste.class);
		dao.adiciona(teste);
		this.teste = new Teste();
		return "teste";
	}
		
	public Teste getTeste() {
		return teste;
	}

	public void setTeste(Teste teste) {
		this.teste = teste;
	}

	public List<Teste> getTestes() {
		DAO<Teste> dao = new DAO<Teste>(Teste.class);
		this.testes = dao.listaTodos();
		return this.testes;
	}

	public void setTestes(List<Teste> testes) {
		this.testes = testes;
	}

	public Teste getTesteSelecionado() {
		return testeSelecionado;
	}

	public void setTesteSelecionado(Teste testeSelecionado) {
		this.testeSelecionado = testeSelecionado;
	}

}

O que estou fazendo de errado? Ja tentei seguir o exemplo dos cases do site do primefaces, porém o resultado é o mesmo.

Muito obrigado.

D

Cara, vc precisa passar o Objeto para o Dialog exibir com o:

<f:setPropertyActionListener target="#{eventoBean.eventoSelecionado}" value="#{evento}"/>

Ficaria dessa forma:

<p:commandButton icon="ui-icon-circle-check" ajax="true" update="formEvento" immediate="true" oncomplete="janela.show()"> <f:setPropertyActionListener target="#{eventoBean.eventoSelecionado}" value="#{evento}"/> </p:commandButton>

T

Olá!
Rapaz, ele da esse problema no botão de edição. Eu tendo selecionar um linha no data table com o selection="#{testeBean.testeSelecioado}".

Apenas corrigindo, o meu selection no data table aponta para testeSelecioado, e não teste como coloquei no exemplo. Dessa forma, ao meu ver, ele deveria setar o objeto testeSelecioado no Bean e o dialogo deveria renderizar junto com ele, ja que estou fazendo chamadas direto deste objeto:

<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >  
                              
                            <h:outputText value="#{testeSelecionado.descricao}" />  
                              
                        </p:dialog>

Meu problema é basicamente em fazer essa ação, carregar o objeto selecionado atravez do botão id=“editar”, alterar esse objeto no dialog e salvar no banco. Mas nem carrega-lo no dialog estou conseguindo fazer.

Obrigado

T

Diego Adriano:
Cara, vc precisa passar o Objeto para o Dialog exibir com o:

<f:setPropertyActionListener target="#{eventoBean.eventoSelecionado}" value="#{evento}"/>

Ficaria dessa forma:

<p:commandButton icon="ui-icon-circle-check" ajax="true" update="formEvento" immediate="true" oncomplete="janela.show()"> <f:setPropertyActionListener target="#{eventoBean.eventoSelecionado}" value="#{evento}"/> </p:commandButton>

Eu achei que o selection do data table ja fizesse isso, mas vou realizar um teste aqui.

Obrigado

D

Então cara, se vc deixa o Selection ativo pq vc coloca um botão lá ??? É meio sem logica …
Mas testa ai …

T

Diego Adriano:
Então cara, se vc deixa o Selection ativo pq vc coloca um botão lá ??? É meio sem logica …
Mas testa ai …

Bom, fiz isso com base no exemplo do primefaces. Pelo o que entendi la, o selection irá setar o objeto no bean com a linha que eu selecionar e, depois, apenas clicaria no botão editar e ele carregaria este objeto dentro do dialog “editar”. Meu raciocinio está errado?

N
Quando vc faz isso:
<p:dataTable id="teste" var="teste" value="#{testeBean.testes}" selectionMode="single"   
                          selection="#{testeBean.teste}" rowKey="#{teste.id}"  >
o datatable faz a seleção do atributo automático, não precisa usar o setPropertyActionListener, e sim preencher o atributo selection da tag com o atributo do ManagedBean como vc fez acima. e nesse trecho ficaria assim:
<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >    
        
    <h:outputText value="#{testeBean.teste.descricao}" />    
        
</p:dialog>
E também precisa retirar a linha do ajax:
<p:commandButton id="novo" value="Novo" onclick="novoDialogo.show()" type="button" />  
                        <p:commandButton id="editar" value="Editar" onclick="novoDialogoEdit.show()" type="button" >  
                            <f:ajax render="modalTesteEditar" execute="@form" />  //RETIRAR
                        </p:commandButton>
D

Foi o que exatamente o que eu disse a ele, se vai usar o Selection automático não precisa do botão, mas se ele quer fazer com o botão então precisa do setproperty …

T

Bom vamos lá.

Fiz algumas alterações mas o resultado esta sendo o mesmo.
Como citei anteriormente, criei uma variavel (testeSelecionado) exclusivamente para receber o objeto selecionado no data table:

<p:dataTable id="teste" var="teste" value="#{testeBean.testes}" selectionMode="single" 
							selection="#{testeBean.testeSelecionado}" rowKey="#{teste.id}"  >
						
							<p:column id="descricao" filterBy="#{teste.descricao}" >
								<h:outputText value="#{teste.descricao}" />
							</p:column>						
						
						</p:dataTable>

Depois eu clico no botão “editar” e nele eu uso um <p:outputtext> para exibir o campo descrição do objeto testeSelecionado que, teoricamente, deveria ter sido carregado no momento em que eu selecionei a linha no data table.

No TesteBean eu tenho uma variável “testeSelecionado” e não estou instânciando ela, ao meu ver, ela será instanciada pelo data table no momento do selection, mas de qualquer, mesmo eu instânciando ela, o resultado é o mesmo.

Hoje ficando doido com isso!! Não aparece nenhum erro no console, funciona tudo normal.

N

Seu raciocínio está certo, e mesmo usando o botão editar que exibe um dialog não precisa setar o objeto com setPropertyActionListener.
Seu selection não precisa ficar assim: selection="#{testeBean.testeSelecionado}" já que é feito automático com o selection="#{testeBean.teste}".

e altere pra isso:
<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >      
          
    <h:outputText value="#{testeBean.teste.descricao}" />      
          
</p:dialog>

Mas se quiser complicar com um property que marca o selecionado (testeSelecionado), tudo bem.

T
nana_ps:
Seu raciocínio está certo, e mesmo usando o botão editar que exibe um dialog não precisa setar o objeto com setPropertyActionListener. Seu selection não precisa ficar assim: selection="#{testeBean.testeSelecionado}" já que é feito automático com o selection="#{testeBean.teste}". e altere pra isso:
<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >      
          
    <h:outputText value="#{testeBean.teste.descricao}" />      
          
</p:dialog>

Mas se quiser complicar com um property que marca o selecionado (testeSelecionado), tudo bem.

Então, eu usei o testeSelecionado numa tentativa frustada de fazer funcionar, mesmo setando diretamente para "teste", o resultado é o mesmo.

Atualizando meus códigos:

<p:dataTable id="teste" var="teste" value="#{testeBean.testes}" selectionMode="single" 
							selection="#{testeBean.teste}" rowKey="#{teste.id}"  >
						
							<p:column id="descricao" filterBy="#{teste.descricao}" >
								<h:outputText value="#{teste.descricao}" />
							</p:column>						
						
						</p:dataTable>

e meu dialog:

<p:dialog id="modalTesteEditar" header="Teste Modal Edit" widgetVar="novoDialogoEdit" modal="true" dynamic="true" >
							<h:outputText value="Descriçao do teste selecionado:" />
							<h:outputText value="#{testeBean.teste.descricao}" />
							
						</p:dialog>
N

Vc retirou a linha do ajax?!

<p:commandButton id="novo" value="Novo" onclick="novoDialogo.show()" type="button" /> <p:commandButton id="editar" value="Editar" onclick="novoDialogoEdit.show()" type="button" > <f:ajax render="modalTesteEditar" execute="@form" /> //RETIRAR </p:commandButton>

T

Olá…
Fiz um teste bem simples mas deu para entender o porque de não estar funcionando.

Teoricamente, quando eu uso o selection="#{testeBean.teste} o datatable ira setor o objeto selecionado dentro de “teste”. Para fazer isso acredito que ele invoque o met setTeste para setar o novo objeto, e getTeste para renderiza-lo no dialog.
Coloquei dois System.out.println, um no getTeste e outro no setTeste. No momento que eu seleciono a linha, o metodo “setTeste” não é invocado, porém, quando clico em editar e ele carrega o objeto “teste”, ele chama sim, o método getTeste. Vou tentar forçar que o datatable chame setTeste.

Obrigado

T

nana_ps:
Vc retirou a linha do ajax?!

<p:commandButton id="novo" value="Novo" onclick="novoDialogo.show()" type="button" /> <p:commandButton id="editar" value="Editar" onclick="novoDialogoEdit.show()" type="button" > <f:ajax render="modalTesteEditar" execute="@form" /> //RETIRAR </p:commandButton>

Sim, retirei sim.

N

Coloque tb essa linha abaixo do dataTable

<p:dataTable id="teste" var="teste" value="#{testeBean.testes}" selectionMode="single" selection="#{testeBean.teste}" rowKey="#{teste.id}" > <p:ajax event="rowSelect" update=":form" />

N

ThEDiegO:
Olá…
Fiz um teste bem simples mas deu para entender o porque de não estar funcionando.

Teoricamente, quando eu uso o selection="#{testeBean.teste} o datatable ira setor o objeto selecionado dentro de “teste”. Para fazer isso acredito que ele invoque o met setTeste para setar o novo objeto, e getTeste para renderiza-lo no dialog.
Coloquei dois System.out.println, um no getTeste e outro no setTeste. No momento que eu seleciono a linha, o metodo “setTeste” não é invocado, porém, quando clico em editar e ele carrega o objeto “teste”, ele chama sim, o método getTeste. Vou tentar forçar que o datatable chame setTeste.

Obrigado

Esses acessos estão certos, pelo get… setTeste não é para ser invocado, e vc já inicializou seu objeto aqui: private Teste teste = new Teste();

Eu uso o @PostConstruct para essa tarefa

@PostConstruct public void construct() { setTeste(new Teste()); }

Essa linha após o dataTable é para resolver… <p:ajax event=“rowSelect” update=":form" />

T

nana_ps:
ThEDiegO:
Olá…
Fiz um teste bem simples mas deu para entender o porque de não estar funcionando.

Teoricamente, quando eu uso o selection="#{testeBean.teste} o datatable ira setor o objeto selecionado dentro de “teste”. Para fazer isso acredito que ele invoque o met setTeste para setar o novo objeto, e getTeste para renderiza-lo no dialog.
Coloquei dois System.out.println, um no getTeste e outro no setTeste. No momento que eu seleciono a linha, o metodo “setTeste” não é invocado, porém, quando clico em editar e ele carrega o objeto “teste”, ele chama sim, o método getTeste. Vou tentar forçar que o datatable chame setTeste.

Obrigado

Esses acessos estão certos, pelo get… setTeste não é para ser invocado, e vc já inicializou seu objeto aqui: private Teste teste = new Teste();

Eu uso o @PostConstruct para essa tarefa

@PostConstruct public void construct() { setTeste(new Teste()); }

Essa linha após o dataTable é para resolver… <p:ajax event=“rowSelect” update=":form" />

Perfeito nana_ps!! Agora esta funcionado!
O <p:ajax ajax evento=“RowSelect” /> serve para executar uma ação, que no caso é selection, e o update atualizado o form. Dessa forma estamos forçando o datatable a executar o selection?

Muito obrigado!

T

Apenas para registrar informação, tudo funcionol, porém, o dialog não vinha com as informações do objeto renderizado no inputText. Para resolver bastou inserir um update=“modalTesteEditar” no botão editar e o dialog foi carregado com o valor do objeto.

Obrigado a todos que ajudaram!

N

Pelo que eu entendi, é ao contrário, RowSelect faz uma solicitação ajax quando uma linha da tabela é selecionada. E como o selection já tem o objeto preenchido com os valores, ele indica através do update qual formulário deve ser atualizado com o valor recuperado.

J

Olá Pessoa, boa tarde,

ressucitei o post porque estou com o mesmo problema e a solução dada aqui para mim não resolveu. As p:dialog simplesmente não são exibidas.

Não se assustem com a tristeza que é o código. Estou aprendendo essas tecnologias há 2 semanas. Tenham piedade.

Peço humildemente e encarecidamente aos experts de plantão, no dia do programador, para me ajudarem. Fico-lhes muitíssimo agradecido.

Trata-se de um pequeno sistema CRUD, com Hibernate, JSF 2, com Apache Tomcat 6 e JDK 1.6. Estas configurações não podem ser alteradas.

Seguem os códigos:

package controller;

import dao.ImovelDao;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;




import model.Imovel;

@ManagedBean @ViewScoped
public class ImovelBean implements Serializable {
	private ImovelDao imovelDao;
	private Imovel imovel = new Imovel();
	private DataModel<Imovel> imoveis;

	public void novo() {
		imovel = new Imovel();
	}

	public String inserir() {
		String resultado = "falha";
		imovelDao = new ImovelDao();
		boolean retorno = imovelDao.inserir(imovel);

		if (retorno) {
			resultado = "imoveis";
		}

		return resultado;
	}

	public void selecionar() {
		imovel = imoveis.getRowData();
	}

	public String alterar() {
		String resultado = "falha";
		imovelDao = new ImovelDao();
		boolean retorno = imovelDao.alterar(imovel);

		if (retorno) {
			resultado = "imoveis";
		}

		return resultado;
	}

	public String remover() {
		String resultado = "falha";
		imovelDao = new ImovelDao();
		boolean retorno = imovelDao.remover(imovel);

		if (retorno) {
			resultado = "imoveis";
		}

		return resultado;
	}

	public DataModel<Imovel> consultar() {
		imovelDao = new ImovelDao();
		List<Imovel> imovelList = imovelDao.listar();
		imoveis = new ListDataModel<Imovel>(imovelList);
		return imoveis;
	}
	
	public Imovel getImovel() {
		return imovel;
	}
	
	public void setImovel(Imovel imovel) {
		this.imovel = imovel;
	}

	public DataModel<Imovel> getImoveis() {
		imovelDao = new ImovelDao();
		List<Imovel> imovelList = imovelDao.listar();
		imoveis = new ListDataModel<Imovel>(imovelList);
		return imoveis;
	}

	public void setImoveis(DataModel<Imovel> imoveis) {
		this.imoveis = imoveis;
	}
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:p="http://primefaces.org/ui">

<h:head>
	<title>Gerenciar Imóveis</title>
</h:head>
<h:body>
	<div align="center">
		<h:form id="formPrincipal">

			<p:dataTable id="tabelaImoveis" var="lista" value="#{imovelBean.imoveis}" 
				 selectionMode="single" selection="#{imovelBean.imovel}" 
				 rowKey="#{lista.matriculaImovel}" >
				 <p:ajax event="rowSelect" update=":formAlterar" />
				<f:facet name="header">Gerenciador de Imóveis</f:facet>
				<p:column headerText="Matrícula">
					<h:outputText value="#{lista.matriculaImovel}" />
				</p:column>
				<p:column headerText="Endereço">
					<h:outputText value="#{lista.enderecoImovel}" />
				</p:column>
				<p:column headerText="Valor do Imóvel">
					<h:outputText value="#{lista.valorImovel}">
						<f:convertNumber type="currency" locale="pt_BR" />
					</h:outputText>
				</p:column>
				<p:column headerText="Ações">
					<p:commandLink title="Alterar" update=":formAlterar:Alterar"
						oncomplete="dialogAlterar.show()" immediate="true">
						<p:graphicImage value="./imagens/editar.jpg" />
						<f:setPropertyActionListener target="#{imovelBean.imovel}"
							value="#{lista}" />
					</p:commandLink>
					<p:commandLink title="Excluir" update=":formExcluir:Excluir"
						oncomplete="confirmation.show()" immediate="true">
						<p:graphicImage value="./imagens/del.jpg" />
						<f:setPropertyActionListener target="#{imovelBean.imovel}"
							value="#{lista}" />
					</p:commandLink>
				</p:column>

			</p:dataTable>
			<p:commandButton value="Cadastrar" id="cadastrar"
				oncomplete="dialogCadastrar.show()" />
		</h:form>
	</div>
	<h:form id="formCadastrar">
		<p:dialog header="Novo Registro" widgetVar="dialogCadastrar" modal="true">
			<p:panelGrid id="panelCadastrar" columns="2">
				<h:outputText value="Matrícula" />
				<p:inputText value="#{imovelBean.imovel.matriculaImovel}" />
				<h:outputText value="Endereço:" />
				<p:inputText value="#{imovelBean.imovel.enderecoImovel}" />
				<h:outputText value="Valor:" />
				<p:inputText value="#{imovelBean.imovel.valorImovel}" />
			</p:panelGrid>
			<p:commandButton value="Cadastrar"
				actionListener="#{pessoaBean.cadastrar}"
				update=":formPrincipal:tabelaImoveis"
				oncomplete="dialogCadastrar.hide()" />
		</p:dialog>
	</h:form>
	<h:form id="formAlterar">
		<p:dialog header="Alterar Registro" widgetVar="dialogAlterar" modal="true" id="Alterar" dynamic="true">
			<p:panelGrid id="panelAlterar" columns="2">
				<h:outputText value="Matrícula" />
				<p:inputText value="#{imovelBean.imovel.matriculaImovel}" />
				<h:outputText value="Endereço:" />
				<p:inputText value="#{imovelBean.imovel.enderecoImovel}" />
				<h:outputText value="Valor:" />
				<p:inputText value="#{imovelBean.imovel.valorImovel}" />
			</p:panelGrid>
			<p:commandButton value="Alterar"
				actionListener="#{imovelBean.alterar}"
				update=":formPrincipal:tabelaImoveis"
				oncomplete="dialogAlterar.hide()" />
		</p:dialog>
	</h:form>
	<h:form id="formExcluir">
		<p:confirmDialog id="Excluir"
			message="Confirma exclusão do registro do imóvel de matrícula #{imovelBean.imovel.matriculaImovel}?"
			header="Excluir" severity="alert" widgetVar="confirmation">
			
			<p:commandButton id="confirm" value="Sim"
				oncomplete="confirmation.hide()"
				actionListener="#{imovelBean.excluir}"
				update=":formPrincipal:tabelaImoveis" />
			<p:commandButton id="decline" value="Não"
				onclick="confirmation.hide()" type="button" />
		</p:confirmDialog>
	</h:form>
</h:body>
</html>
Criado 21 de março de 2012
Ultima resposta 13 de set. de 2014
Respostas 20
Participantes 5