PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Metodos create, update não funcionam dentro de p:dialog #491660

10/09/2014

0

Coloquei um p:dialog na página de cadastro para pesquisar os passageiros, copiei a página search que já funciona corretamente.
Acontece que quando clico em search não funciona, no navegador aparece um #

			<p:dialog id="dialog" widgetVar="buscar" minHeight="400"
				minWidth="400"  modal="true" closable="true" position="center"
				showEffect="slide" draggable="true" resizable="true" visible="true">
				<h:form id="search">
					<f:validateBean disabled="true">
						<h:panelGroup styleClass="search">

							<h:panelGrid columnClasses="label,component,required" columns="3">
								<h:outputLabel for="pessoaBeanExampleNome" value="Nome:" />
								<h:panelGroup>
									<h:inputText id="pessoaBeanExampleNome"
										value="#{pessoaBean.example.nome}" />
									<h:message for="pessoaBeanExampleNome" styleClass="error" />
								</h:panelGroup>
								<h:outputText />
								<h:outputLabel for="pessoaBeanExampleNomePai" value="Nome Pai:" />
								<h:panelGroup>
									<h:inputText id="pessoaBeanExampleNomePai"
										value="#{pessoaBean.example.nomePai}" />
									<h:message for="pessoaBeanExampleNomePai" styleClass="error" />
								</h:panelGroup>
								<h:outputText />
								<h:outputLabel for="pessoaBeanExampleNomeMae" value="Nome Mae:" />
								<h:panelGroup>
									<h:inputText id="pessoaBeanExampleNomeMae"
										value="#{pessoaBean.example.nomeMae}" />
									<h:message for="pessoaBeanExampleNomeMae" styleClass="error" />
								</h:panelGroup>
								<h:outputText />
							</h:panelGrid>
							<h:panelGroup styleClass="buttons">
								<h:commandLink value="Search" 
									styleClass="btn btn-primary" actionListener="#{pessoaBean.search()}" />
								<h:commandLink value="Create New" action="#{pessoaBean.create}"
									styleClass="btn btn-primary" />
							</h:panelGroup>
						</h:panelGroup>
					</f:validateBean>

					<h:dataTable id="pessoaBeanPageItems" styleClass="data-table"
						value="#{pessoaBean.pageItems}" var="_item">
						<h:column>
							<f:facet name="header">
								<h:outputText value="Nome" />
							</f:facet>
							<h:link outcome="/pessoa/view">
								<f:param name="id" value="#{_item.id}" />
								<h:outputText id="itemNome" value="#{_item.nome}" />
							</h:link>
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Data Nascimento" />
							</f:facet>
							<h:link outcome="/pessoa/view">
								<f:param name="id" value="#{_item.id}" />
								<h:outputText id="itemDataNascimento"
									value="#{_item.dataNascimento}">
									<f:convertDateTime type="date" />
								</h:outputText>
							</h:link>
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Nome Pai" />
							</f:facet>
							<h:link outcome="/pessoa/view">
								<f:param name="id" value="#{_item.id}" />
								<h:outputText id="itemNomePai" value="#{_item.nomePai}" />
							</h:link>
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Nome Mae" />
							</f:facet>
							<h:link outcome="/pessoa/view">
								<f:param name="id" value="#{_item.id}" />
								<h:outputText id="itemNomeMae" value="#{_item.nomeMae}" />
							</h:link>
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Data Cadastro" />
							</f:facet>
							<h:link outcome="/pessoa/view">
								<f:param name="id" value="#{_item.id}" />
								<h:outputText id="itemDataCadastro"
									value="#{_item.dataCadastro}">
									<f:convertDateTime type="date" />
								</h:outputText>
							</h:link>
						</h:column>
					</h:dataTable>
					<ui:include src="/resources/scaffold/paginator.xhtml">
						<ui:param name="paginatorBean" value="#" />
					</ui:include>
				</h:form>

			</p:dialog>


Aqui o meu bean:

package br.com.eptc.taxi.tarifa.view;

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

import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateful;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import br.com.eptc.taxi.tarifa.model.Pessoa;
import br.com.eptc.taxi.tarifa.model.Contato;
import br.com.eptc.taxi.tarifa.model.Convenio;
import br.com.eptc.taxi.tarifa.model.Documento;
import br.com.eptc.taxi.tarifa.model.Endereco;
import br.com.eptc.taxi.tarifa.model.Motorista;
import br.com.eptc.taxi.tarifa.model.Passageiro;
import java.util.Iterator;

/**
 * Backing bean for Pessoa entities.
 * <p>
 * This class provides CRUD functionality for all Pessoa entities. It focuses
 * purely on Java EE 6 standards (e.g. <tt>@ConversationScoped</tt> for
 * state management, <tt>PersistenceContext</tt> for persistence,
 * <tt>CriteriaBuilder</tt> for searches) rather than introducing a CRUD framework or
 * custom base class.
 */

@Named
@Stateful
@ConversationScoped
public class PessoaBean implements Serializable
{

   private static final long serialVersionUID = 1L;

   /*
    * Support creating and retrieving Pessoa entities
    */

   private Long id;

   public Long getId()
   {
      return this.id;
   }

   public void setId(Long id)
   {
      this.id = id;
   }

   private Pessoa pessoa;

   public Pessoa getPessoa()
   {
      return this.pessoa;
   }

   @Inject
   private Conversation conversation;

   @PersistenceContext(type = PersistenceContextType.EXTENDED)
   private EntityManager entityManager;

   public String create()
   {

      this.conversation.begin();
      return "create?faces-redirect=true";
   }

   public void retrieve()
   {

      if (FacesContext.getCurrentInstance().isPostback())
      {
         return;
      }

      if (this.conversation.isTransient())
      {
         this.conversation.begin();
      }

      if (this.id == null)
      {
         this.pessoa = this.example;
      }
      else
      {
         this.pessoa = findById(getId());
      }
   }

   public Pessoa findById(Long id)
   {

      return this.entityManager.find(Pessoa.class, id);
   }

   /*
    * Support updating and deleting Pessoa entities
    */

   public String update()
   {
      this.conversation.end();

      try
      {
         if (this.id == null)
         {
            this.entityManager.persist(this.pessoa);
            return "search?faces-redirect=true";
         }
         else
         {
            this.entityManager.merge(this.pessoa);
            return "view?faces-redirect=true&id=" + this.pessoa.getId();
         }
      }
      catch (Exception e)
      {
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
         return null;
      }
   }

   public String delete()
   {
      this.conversation.end();

      try
      {
         Pessoa deletableEntity = findById(getId());
         Iterator<Contato> iterContatosPessoa = deletableEntity.getContatosPessoa().iterator();
         for (; iterContatosPessoa.hasNext();)
         {
            Contato nextInContatosPessoa = iterContatosPessoa.next();
            nextInContatosPessoa.setPessoa(null);
            iterContatosPessoa.remove();
            this.entityManager.merge(nextInContatosPessoa);
         }
         Iterator<Endereco> iterEnderecosPessoa = deletableEntity.getEnderecosPessoa().iterator();
         for (; iterEnderecosPessoa.hasNext();)
         {
            Endereco nextInEnderecosPessoa = iterEnderecosPessoa.next();
            nextInEnderecosPessoa.setPessoa(null);
            iterEnderecosPessoa.remove();
            this.entityManager.merge(nextInEnderecosPessoa);
         }
         Iterator<Documento> iterDocumentosPessoa = deletableEntity.getDocumentosPessoa().iterator();
         for (; iterDocumentosPessoa.hasNext();)
         {
            Documento nextInDocumentosPessoa = iterDocumentosPessoa.next();
            nextInDocumentosPessoa.setPessoa(null);
            iterDocumentosPessoa.remove();
            this.entityManager.merge(nextInDocumentosPessoa);
         }
         Passageiro pessoaPassageiro = deletableEntity.getPessoaPassageiro();
         pessoaPassageiro.setPessoa(null);
         this.entityManager.merge(pessoaPassageiro);
         Convenio pessoaConvenio = deletableEntity.getPessoaConvenio();
         pessoaConvenio.setPessoa(null);
         this.entityManager.merge(pessoaConvenio);
         Motorista pessoaMotorista = deletableEntity.getPessoaMotorista();
         pessoaMotorista.setPessoa(null);
         this.entityManager.merge(pessoaMotorista);
         this.entityManager.remove(deletableEntity);
         this.entityManager.flush();
         return "search?faces-redirect=true";
      }
      catch (Exception e)
      {
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
         return null;
      }
   }

   /*
    * Support searching Pessoa entities with pagination
    */

   private int page;
   private long count;
   private List<Pessoa> pageItems;

   private Pessoa example = new Pessoa();

   public int getPage()
   {
      return this.page;
   }

   public void setPage(int page)
   {
      this.page = page;
   }

   public int getPageSize()
   {
      return 10;
   }

   public Pessoa getExample()
   {
      return this.example;
   }

   public void setExample(Pessoa example)
   {
      this.example = example;
   }

   public void search()
   {
      this.page = 0;
   }

   public void paginate()
   {

      CriteriaBuilder builder = this.entityManager.getCriteriaBuilder();

      // Populate this.count

      CriteriaQuery<Long> countCriteria = builder.createQuery(Long.class);
      Root<Pessoa> root = countCriteria.from(Pessoa.class);
      countCriteria = countCriteria.select(builder.count(root)).where(
            getSearchPredicates(root));
      this.count = this.entityManager.createQuery(countCriteria)
            .getSingleResult();

      // Populate this.pageItems

      CriteriaQuery<Pessoa> criteria = builder.createQuery(Pessoa.class);
      root = criteria.from(Pessoa.class);
      TypedQuery<Pessoa> query = this.entityManager.createQuery(criteria
            .select(root).where(getSearchPredicates(root)));
      query.setFirstResult(this.page * getPageSize()).setMaxResults(
            getPageSize());
      this.pageItems = query.getResultList();
   }

   private Predicate[] getSearchPredicates(Root<Pessoa> root)
   {

      CriteriaBuilder builder = this.entityManager.getCriteriaBuilder();
      List<Predicate> predicatesList = new ArrayList<Predicate>();

      String nome = this.example.getNome();
      if (nome != null && !"".equals(nome))
      {
         predicatesList.add(builder.like(root.<String> get("nome"), '%' + nome + '%'));
      }
      String nomePai = this.example.getNomePai();
      if (nomePai != null && !"".equals(nomePai))
      {
         predicatesList.add(builder.like(root.<String> get("nomePai"), '%' + nomePai + '%'));
      }
      String nomeMae = this.example.getNomeMae();
      if (nomeMae != null && !"".equals(nomeMae))
      {
         predicatesList.add(builder.like(root.<String> get("nomeMae"), '%' + nomeMae + '%'));
      }

      return predicatesList.toArray(new Predicate[predicatesList.size()]);
   }

   public List<Pessoa> getPageItems()
   {
      return this.pageItems;
   }

   public long getCount()
   {
      return this.count;
   }

   /*
    * Support listing and POSTing back Pessoa entities (e.g. from inside an
    * HtmlSelectOneMenu)
    */

   public List<Pessoa> getAll()
   {

      CriteriaQuery<Pessoa> criteria = this.entityManager
            .getCriteriaBuilder().createQuery(Pessoa.class);
      return this.entityManager.createQuery(
            criteria.select(criteria.from(Pessoa.class))).getResultList();
   }

   @Resource
   private SessionContext sessionContext;

   public Converter getConverter()
   {

      final PessoaBean ejbProxy = this.sessionContext.getBusinessObject(PessoaBean.class);

      return new Converter()
      {

         @Override
         public Object getAsObject(FacesContext context,
               UIComponent component, String value)
         {

            return ejbProxy.findById(Long.valueOf(value));
         }

         @Override
         public String getAsString(FacesContext context,
               UIComponent component, Object value)
         {

            if (value == null)
            {
               return "";
            }

            return String.valueOf(((Pessoa) value).getId());
         }
      };
   }

   /*
    * Support adding children to bidirectional, one-to-many tables
    */

   private Pessoa add = new Pessoa();

   public Pessoa getAdd()
   {
      return this.add;
   }

   public Pessoa getAdded()
   {
      Pessoa added = this.add;
      this.add = new Pessoa();
      return added;
   }
}
Cássia Freitas

Cássia Freitas

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar