<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<p:resources />
</h:head>
<h:body>
<style>
.right{
width: 150px;
color: blue;
float: right;
}
</style>
<ui:composition template="template.xhtml">
<ui:define name="conteudo">
<p:messages />
<h:form prependId="false" id="formprofessor">
<p:fieldset legend="Informações do professor" >
<h:panelGrid border="0" width="100%" columns="4" columnClasses="right,left,right,left">
<h:outputText value="#{msgs.cpf}" />
<h:panelGroup>
<p:inputMask value="#{professorController.professor.cpf}" mask="[CPF removido]" validator="CPFValidator"
converter="CPFConverter" id="cpf" label="cpf" size="15" alt="cpf" />
<h:commandLink><h:graphicImage value="imagens/lupa.gif" /></h:commandLink>
</h:panelGroup>
<h:outputText value="#{msgs.matricula}" />
<h:inputText value="#{professorController.professor.matriculaFuncional}" size="21" maxlength="10" />
<h:outputText value="#{msgs.nome}" />
<h:inputText value="#{professorController.professor.nomePessoa}" size="46" />
</h:panelGrid>
</p:fieldset>
<p:fieldset legend="Endereço" >
<h:panelGrid border="0" width="100%" columns="4" columnClasses="right,left,right,left">
<h:outputText value="#{msgs.logradouro}" />
<h:inputText value="#{professorController.professor.pessoa.endereco.logradouro}" size="46" />
<h:outputText value="#{msgs.numero}" />
<h:inputText value="#{professorController.professor.pessoa.endereco.numero}" size="10" />
<h:outputText value="#{msgs.bairro}" />
<h:inputText value="#{professorController.professor.pessoa.endereco.bairro}" size="46" />
<h:outputText value="#{msgs.cep}" />
<p:inputMask mask="99.999-999" value="#{professorController.professor.pessoa.endereco.cep}" converter="CEPConverter" />
<h:outputText value="#{msgs.complemento}" />
<h:inputText value="#{professorController.professor.pessoa.endereco.complemento}" size="46" />
<h:outputText/>
<h:outputText/>
<h:outputText value="#{msgs.municipio}" />
<h:inputText value="#{professorController.professor.municipio.descricao}" size="46" />
<p:commandButton value="Pesquisar" onclick="dialogMunicipio.show();" type="button" />
<h:outputText/>
</h:panelGrid>
</p:fieldset>
<p:dialog header="Pesquisa por município" widgetVar="dialogMunicipio" modal="true" height="350" width="500" showEffect="bounce">
<h:panelGrid columns="3">
<h:outputText value="Município:" />
<h:inputText size="60" value="#{professorController.qryMunicipio.descricao}" />
<p:commandButton value="Pesquisar" actionListener="#{professorController.pesquisarMunicipio}" update="tablemunicipio" />
</h:panelGrid>
<div id="tabela" style="height:250px; width:99%; border: solid 1px #9AB75F; overflow:auto;">
<p:dataTable var="obj" id="tablemunicipio"
value="#{professorController.listaMunicipio}">
<p:column>
<f:facet name="header">Município</f:facet>
<h:outputText value="#{obj.descricao}" />
</p:column>
<p:column>
<f:facet name="header">Estado</f:facet>
<h:outputText value="#{obj.estado.sigla}" />
</p:column>
<p:column>
<f:facet name="header">Ação</f:facet>
<p:commandButton update="formprofessor" onclick="dialogMunicipio.hide()" image="ui-icon ui-icon-bookmark" title="Adicionar">
<f:setPropertyActionListener target="#{professorController.professor.municipio}" value="#{obj}" />
</p:commandButton>
</p:column>
</p:dataTable>
</div>
<div id="load" style="display: none"><img
src="imagens/ajaxloading.gif" />Carregando...</div>
<p:ajaxStatus
onstart="document.getElementById('tabela').style.display = 'none',document.getElementById('load').style.display = 'block'"
oncomplete="document.getElementById('tabela').style.display = 'block',document.getElementById('load').style.display = 'none'"
style="width:16px;height:16px;">
<f:facet name="start"><h:outputText value="Carregando..." /></f:facet>
<f:facet name="complete"><h:outputText value="" /></f:facet>
</p:ajaxStatus>
</p:dialog>
<p:commandButton ajax="false" value="Inserir" action="#{professorController.insert}" disabled="#{professorController.professor.pessoa.idPessoaFisica != null}"/>
<p:commandButton ajax="false" value="Salvar" action="#{professorController.update}" disabled="#{professorController.professor.pessoa.idPessoaFisica == null}" />
<p:commandButton ajax="false" value="Limpar" action="#{professorController.clear}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
Problema pesquisar e inserir com Ajax + dialog +datatable (Primefaces 2.2)
Controller
/**
*
*/
package tcc.br.com.controller;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.event.ActionEvent;
import javax.faces.validator.ValidatorException;
import tcc.br.com.dao.MunicipioDAO;
import tcc.br.com.dao.ProfessorDAO;
import tcc.br.com.model.Municipio;
import tcc.br.com.model.Professor;
import tcc.br.com.util.ExceptionDatabase;
import tcc.br.com.validator.EnderecoValidator;
import tcc.br.com.validator.ProfessorValidator;
/**
* @author Lesliê Cardoso da Silva
* @since 10/11/2010
*
*/
@ManagedBean(name="professorController")
@RequestScoped
public class ProfessorController extends MessageController {
private Professor professor;
private List<Professor> listaProfessor;
private List<Municipio> listaMunicipio;
private Municipio qryMunicipio;
/**
* @return the professor
*/
public Professor getProfessor() {
if(professor == null){
professor = new Professor();
}
return professor;
}
/**
* @param professor the professor to set
*/
public void setProfessor(Professor professor) {
this.professor = professor;
}
/**
* @return the qryMunicipio
*/
public Municipio getQryMunicipio() {
if(qryMunicipio == null){
qryMunicipio = new Municipio();
}
return qryMunicipio;
}
/**
* @param qryMunicipio the qryMunicipio to set
*/
public void setQryMunicipio(Municipio qryMunicipio) {
this.qryMunicipio = qryMunicipio;
}
/**
* @return the listaMunicipio
*/
public List<Municipio> getListaMunicipio() {
if(listaMunicipio == null){
try
{
MunicipioDAO munDAO = new MunicipioDAO();
listaMunicipio = munDAO.findByMunicipio(getQryMunicipio());
}
catch(ExceptionDatabase e)
{
setErroMessage(e.getMessage());
}
}
return listaMunicipio;
}
/**
* @param listaMunicipio the listaMunicipio to set
*/
public void setListaMunicipio(List<Municipio> listaMunicipio) {
this.listaMunicipio = listaMunicipio;
}
/**
* @return the listaProfessor
*/
public List<Professor> getListaProfessor() {
if(listaProfessor == null){
//listaProfessor = new Arr<Professor>();
}
return listaProfessor;
}
/**
* @param listaProfessor the listaProfessor to set
*/
public void setListaProfessor(List<Professor> listaProfessor) {
this.listaProfessor = listaProfessor;
}
/**
* Função para inserir professor
* @return void
*/
public void insert() throws ExceptionDatabase{
ProfessorDAO pDAO = new ProfessorDAO();
try
{
//Validação da classe professor
ProfessorValidator pV = new ProfessorValidator();
pV.validate(null, null,getProfessor());
//Validação da classe endereço caso um desses campos estiver preenchidos
if(!getProfessor().getPessoa().getEndereco().getLogradouro().equals("")
|| !getProfessor().getPessoa().getEndereco().getNumero().equals("")
|| !getProfessor().getPessoa().getEndereco().getBairro().equals("")
|| !getProfessor().getPessoa().getEndereco().getCep().equals("")
|| !getProfessor().getPessoa().getEndereco().getComplemento().equals("")
|| !getProfessor().getPessoa().getEndereco().getMunicipio().equals(""))
{
EnderecoValidator endV = new EnderecoValidator();
endV.validate(null,null,getProfessor().getPessoa().getEndereco());
getProfessor().getPessoa().setMunicipio(getProfessor().getMunicipio());
}
pDAO.insert(getProfessor());
setProfessor(null);
setInfoMessage("Professor(a) inserido(a) com sucesso!");
}
catch(ExceptionDatabase e)
{
setErroMessage(e.getMessage());
}
catch(ValidatorException e)
{
setErroMessage(e.getMessage());
}
}
/**
* Função que limpa a lista do popup para efetuar nova busca utilizando AJAX
*
* @author Lesliê Cardoso da Silva
* @since 13/11/2010
*
* @param actionEvent
*/
public void pesquisarMunicipio(ActionEvent actionEvent) {
setListaMunicipio(null);
}
/**
*
*
* @author Lesliê Cardoso da Silva
* @since 13/11/2010
*
*/
public void clear(){
setProfessor(null);
}
}
DAO do Professor
package tcc.br.com.dao;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import tcc.br.com.model.PessoaFisica;
import tcc.br.com.model.Professor;
import tcc.br.com.util.Conexao;
import tcc.br.com.util.ExceptionDatabase;
/**
* @author Lesliê Cardoso da Silva
* @since 10/11/2010
*
*/
public class ProfessorDAO extends DAO{
private PessoaFisica pessoa;
private Professor professor;
/**
* @return the professor
*/
public Professor getProfessor() {
if(professor == null){
professor = new Professor();
}
return professor;
}
/**
* @param professor the professor to set
*/
public void setProfessor(Professor professor) {
this.professor = professor;
}
/**
* @return the pessoa
*/
public PessoaFisica getPessoa() {
if(pessoa == null){
pessoa = new PessoaFisica();
}
return pessoa;
}
/**
* @param pessoa the pessoa to set
*/
public void setPessoa(PessoaFisica pessoa) {
this.pessoa = pessoa;
}
/**
* @param Object
*/
@Override
public void insert(Object obj) throws ExceptionDatabase {
StringBuilder sql = new StringBuilder();
Conexao con = new Conexao();
sql.append("INSERT INTO tcc.professor(id_pessoa_fisica, nome_pessoa, matricula_funcional,cpf) ");
sql.append("VALUES (?, ?, ?, ?); ");
Professor pf = (Professor)obj;
try
{
//Seta a abertura de conexao com commit manual
con.open(false);
PessoaFisicaDAO pfDAO = new PessoaFisicaDAO();
//Verifica se existe um professor cadastrado com essa matricula
pfDAO.findByMatriculaFuncional(pf.getMatriculaFuncional());
//Seta a chave primaria da pessoa fisica
pf.setIdPessoaFisica(getIdSequence(con,"tcc.id_pessoa_fisica_seq"));
PreparedStatement stmt = con.getPreparedStatement(sql.toString());
//Insere o professor que automaticamente grava na pessoa fisica atraves da herança na tabela
stmt.setInt(1,pf.getIdPessoaFisica());
stmt.setString(2,pf.getNomePessoa());
stmt.setString(3,pf.getMatriculaFuncional());
stmt.setString(4,pf.getCpf());
con.executeSQL(stmt);
PessoaFisicaEnderecoDAO endDAO = new PessoaFisicaEnderecoDAO();
if(!pf.getPessoa().getEndereco().getLogradouro().trim().equals(""))
endDAO.insert(con,pf.getPessoa().getEndereco());
con.commit();
}
catch(ExceptionDatabase e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
catch(SQLException e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
finally{
con.close();
}
}
/* (non-Javadoc)
* @see tcc.br.com.dao.DAO#update(java.lang.Object)
*/
@Override
public void update(Object obj) throws ExceptionDatabase {
// TODO Auto-generated method stub
}
}
/**
*
*/
package tcc.br.com.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import tcc.br.com.model.Municipio;
import tcc.br.com.util.Conexao;
import tcc.br.com.util.ExceptionDatabase;
import tcc.br.com.util.ParseResultSetForObj;
/**
* @author Lesliê Cardoso da Silva
* @since 12/11/2010
*
*/
public class MunicipioDAO {
public List<Municipio> findByMunicipio(Municipio mun) throws ExceptionDatabase{
StringBuffer queryBuffer = new StringBuffer();
queryBuffer.append(" SELECT * FROM tcc.municipio ");
queryBuffer.append(" INNER JOIN tcc.estado ON tcc.municipio.id_estado = tcc.estado.id_estado ");
queryBuffer.append(" WHERE nome_municipio ilike ? ");
Conexao con = new Conexao();
try
{
con.open();
List<Municipio> listaMunicipio= new ArrayList<Municipio>();
PreparedStatement stmt = con.getPreparedStatement(queryBuffer);
stmt.setString(1, (mun.getdescricao()==null)?"%%":"%"+mun.getdescricao()+"%");
ResultSet rs = con.execQuery(stmt);
ParseResultSetForObj ps = new ParseResultSetForObj();
while(rs.next()){
listaMunicipio.add(ps.convertRsForMunicipio(rs, new Municipio()));
}
return listaMunicipio;
}
catch(ExceptionDatabase e)
{
throw new ExceptionDatabase(e.getMessage());
}
catch(SQLException e)
{
throw new ExceptionDatabase(e.getMessage());
}
finally{
con.close();
}
}
}



3 Respostas
Cara…
eu não consegui deixar o Dialog ficar na tela, quando eu clico em pesquisar ele fecha o dialog, estou usando a mesma versão do prime faces!
Aconteceu isso com você também!!
Abraço!!
xD~~
Cara…eu não consegui deixar o Dialog ficar na tela, quando eu clico em pesquisar ele fecha o dialog, estou usando a mesma versão do prime faces!
Aconteceu isso com você também!!
Abraço!!
xD~~
Não aparece o dialog, a pesquisa e ajax funciona perfeitamente, o problema que quando clico em algum item depois da busca realizada e clico no item selecionado ele está setando o valor correto no objeto, mas a descrição do campo ele está colocando outra.
Cara…
ontem depois de horas consegui arrumar o meu…
Dá uma olhada na minha view!
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
</h:head>
<h:body>
<f:view>
<ui:include src="/includes/menu.xhtml"/>
<p:panel header="Cadastro de Veículo" >
<h:form id="form" prependId="false">
<h:panelGrid id="transportador" columns="3" cellpadding="5" cellspacing="3" dir="LTR" >
<h:outputLabel value="Código:" />
<h:panelGroup>
<h:inputText value="#{veiculoTranspMB.veiculoTransp.idVeiculoTransp}" id="idVeiculoTransp" maxlength="" size="8"/>
<h:outputLabel value="Ativo:" style="margin-left: 10px;" />
<h:selectBooleanCheckbox value="#{veiculoTranspMB.veiculoTransp.ativo}" id="ativo" />
</h:panelGroup>
<h:outputText />
<h:outputLabel value="Transportador"/>
<h:panelGroup>
<h:inputText value="#{veiculoTranspMB.veiculoTransp.transportador.xNome}" id="nometransportador" maxlength="" size=""/>
<p:commandButton value="Buscar" onclick="modal.show()" type="button" ajax="false"/>
</h:panelGroup>
<h:outputText/>
<h:outputLabel value="Placa:"/>
<h:inputText value="#{veiculoTranspMB.veiculoTransp.placa}" id="placa" maxlength="8" size="8"/>
<p:message for="placa" />
<h:outputLabel value="UF:"/>
<h:panelGroup>
<h:selectOneMenu value="#{veiculoTranspMB.veiculoTransp.UF}" id="UF">
<f:selectItem itemLabel="Selecione" itemValue="" />
<f:selectItem itemLabel="AC" itemValue="AC"/>
<f:selectItem itemLabel="SC" itemValue="BA"/>
<f:selectItem itemLabel="MG" itemValue="MG"/>
<f:selectItem itemLabel="ES" itemValue="ES"/>
<f:selectItem itemLabel="RJ" itemValue="RJ"/>
<f:selectItem itemLabel="SP" itemValue="SP"/>
<f:selectItem itemLabel="PR" itemValue="PR"/>
<f:selectItem itemLabel="SC" itemValue="SC"/>
<f:selectItem itemLabel="RS" itemValue="RS"/>
<f:selectItem itemLabel="MS" itemValue="MS"/>
<f:selectItem itemLabel="MT" itemValue="MT"/>
<f:selectItem itemLabel="GO" itemValue="GO"/>
<f:selectItem itemLabel="DF" itemValue="DF"/>
<f:selectItem itemLabel="SE" itemValue="SE"/>
<f:selectItem itemLabel="AL" itemValue="AL"/>
<f:selectItem itemLabel="PE" itemValue="PE"/>
<f:selectItem itemLabel="PB" itemValue="PB"/>
<f:selectItem itemLabel="RN" itemValue="RN"/>
<f:selectItem itemLabel="CE" itemValue="CE"/>
<f:selectItem itemLabel="PI" itemValue="PI"/>
<f:selectItem itemLabel="MA" itemValue="MA"/>
<f:selectItem itemLabel="TO" itemValue="TO"/>
<f:selectItem itemLabel="AP" itemValue="AP"/>
<f:selectItem itemLabel="PA" itemValue="PA"/>
<f:selectItem itemLabel="RR" itemValue="RR"/>
<f:selectItem itemLabel="AM" itemValue="AM"/>
<f:selectItem itemLabel="RO" itemValue="RO"/>
</h:selectOneMenu>
<p:message for="UF" />
</h:panelGroup>
<h:outputText/>
<h:outputLabel value="ANTT:"/>
<h:panelGroup>
<h:inputText value="#{veiculoTranspMB.veiculoTransp.RNTC}" id="RNTC" maxlength="20" size="20"/>
<p:message for="RNTC" />
</h:panelGroup>
<h:outputText/>
<h:outputLabel value="Tipo de Veiculo:"/>
<h:panelGroup>
<h:selectOneMenu value="#{veiculoTranspMB.veiculoTransp.tipoVeiculo}" id="tipoVeiculo" >
<f:selectItem itemLabel="Selecione" itemValue="" />
<f:selectItem itemLabel="Reboque" itemValue="2" />
<f:selectItem itemLabel="Caminhão" itemValue="1" />
</h:selectOneMenu>
</h:panelGroup>
<h:outputText />
<p:commandButton value="Salvar" style=" margin-right: 10px;" action="#{veiculoTranspMB.salvar}" ajax="false" />
<p:commandButton value="Limpar" style=" margin-right: 10px;" type="reset" />
<p:button outcome="veiculoTranpoList" value="Cancelar" style="margin-left: 10px;"/>
</h:panelGrid>
</h:form>
<h:form>
<p:dialog id="dialog" header="Busca de Transportadores" widgetVar="modal" modal="true" height="500" width="900" >
<h:panelGrid columns="3">
<h:outputText value="Nome:" />
<h:inputText value="#{veiculoTranspMB.nome}"/>
<p:commandButton value="Consulta" update="table" async="true" actionListener="#{veiculoTranspMB.consultaTransportador}"/>
</h:panelGrid>
<p:dataTable height="100" id="table" value="#{veiculoTranspMB.transportadores}" var="t"
emptyMessage="Nenhum Transportador Encotrado"
selection="#{veiculoTranspMB.veiculoTransp.transportador}"
selectionMode="single" >
<f:facet name="header">
<h:outputText value="Transportadores"/>
</f:facet>
<p:column>
<f:facet name="header" >
<h:outputText value="transportador"/>
</f:facet>
<h:outputText value="#{t.xNome}"/>
</p:column>
<p:column>
<f:facet name="header" >
<h:outputText value="CPF/CNPJ"/>
</f:facet>
<h:outputText value="#{t.CPF} #{t.CNPJ}"/>
</p:column>
<f:facet name="footer" >
<p:commandButton update="form" value="Selecionar" onclick="modal.hide()"/>
</f:facet>
</p:dataTable>
</p:dialog>
</h:form>
</p:panel>
<ui:include src="/includes/rodape.xhtml"/>
</f:view>
</h:body>
</html>
Espero que te ajude!!