Irmão, você foi um enviado de Deus pra mim… Resolvi, muitíssimo obrigado.
Diego, apesar de funcionar, está o.k. agora, mas ao implementar o construtor, perdi a minha listagem…
ao invocar o método, parece "colidir"os nomes dos atributos e trazer uma lista vazia…
O que recomenda fazer?
Hum … manda os códigos pra mim, vou montar aqui e analisar pra te ajudar …
diegoadricandido23@gmail.com
Estou fazendo isso agora, Diego.
Evento Bean.
[code]package br.com.managedbeans;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;
import br.com.modelo.Evento;
import br.com.repository.EventoRepository;
@ManagedBean
public class EventoBean {
private Evento evento = new Evento();
private List<Evento> eventos;
public EventoBean() {
evento = new Evento();
eventos = new ArrayList<Evento>();
}
public void adiciona() {
EntityManager manager = this.getManager();
EventoRepository repository = new EventoRepository(manager);
if (this.evento.getId() == null) {
repository.adiciona(this.evento);
} else {
repository.atualiza(this.evento);
}
this.evento = new Evento();
this.evento = null;
}
public void preparaAlteracao() {
Map<String, String> params = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap();
Long id = Long.parseLong(params.get("id"));
EntityManager manager = this.getManager();
EventoRepository repository = new EventoRepository(manager);
this.evento = repository.procura(id);
}
public void remove() {
Map<String, String> params = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap();
Long id = Long.parseLong(params.get("id"));
EntityManager manager = this.getManager();
EventoRepository repository = new EventoRepository(manager);
repository.remove(id);
this.evento = null;
}
public List<Evento> completeEvento(String query) {
EventoRepository repository = new EventoRepository(getManager());
List<Evento> results = new ArrayList<Evento>();
if (eventos.isEmpty()) {
this.eventos = repository.complete();
}
for (Evento e : eventos) {
if (e.getEvento().startsWith(query)) {
results.add(e);
}
}
return results;
}
public List<Evento> getEventos() {
if (this.eventos == null) {
EntityManager manager = this.getManager();
EventoRepository repository = new EventoRepository(manager);
this.eventos = repository.getLista();
}
return this.eventos;
}
private EntityManager getManager() {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpServletRequest request = (HttpServletRequest) ec.getRequest();
EntityManager manager = (EntityManager) request
.getAttribute("EntityManager");
return manager;
}
private Evento eventoSelecionado;
public Evento getEvento() {
return evento;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public Evento getEventoSelecionado() {
return eventoSelecionado;
}
public void setEventoSelecionado(Evento eventoSelecionado) {
this.eventoSelecionado = eventoSelecionado;
}
public void setEventos(List<Evento> eventos) {
this.eventos = eventos;
}
}
[/code]
Evento Repository.
[code]package br.com.repository;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.modelo.Evento;
public class EventoRepository {
private EntityManager manager;
public EventoRepository(EntityManager manager) {
this.manager = manager;
}
public void adiciona(Evento evento) {
this.manager.persist(evento);
}
public void remove(long id) {
Evento evento = this.procura(id);
this.manager.remove(evento);
}
public Evento atualiza(Evento evento) {
return this.manager.merge(evento);
}
public Evento procura(Long id) {
return this.manager.find(Evento.class, id);
}
@SuppressWarnings("unchecked")
public List<Evento> getLista() {
Query query = this.manager.createQuery("SELECT e FROM Evento e");
return query.getResultList();
}
@SuppressWarnings("unchecked")
public List<Evento> complete() {
Query query = this.manager.createQuery("Select e From Evento as e");
return query.getResultList();
}
}
[/code]
Página que lista.
[code]<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/html4/loose.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:ui=“http://java.sun.com/jsf/facelets”
xmlns:p=“http://primefaces.org/ui”>
<h:head>
<title>Lista de registros</title>
</h:head>
<body>
<ui:composition template="…/templates/template.xhtml">
<ui:define name=“content”>
<p:dataTable var="evento" value="#{eventoBean.eventos}"
paginator="true" rows="2">
<h:column>
<f:facet name="header">
<h:outputText value="Id" />
</f:facet> #{evento.id}
</h:column>
<f:facet name="header">Lista de Eventos</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Nome do evento" />
</f:facet>
<h:outputText value="#{evento.evento}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Data do evento" />
</f:facet>
<h:outputText value="#{evento.dataEvento}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="opera��es" />
</f:facet>
<f:ajax event="click" render="@form"
listener="#{eventoBean.preparaAlteracao}">
<h:commandLink>
<f:param name="id" value="#{evento.id}" />
Alterar
</h:commandLink>
</f:ajax>
</p:column>
</p:dataTable>
</ui:define>
</ui:composition>
</body>
</html>[/code]
Está aí.
Esta tbm no seu e-mail.