Pessoal, me ajudem a criar esta Dialog, estou com problemas ao carregar os valores, não há exception, porém os valores não são carregados:
Eis minha página:
<!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.org/ui">
<ui:composition template="../templates/template.xhtml">
<ui:define name="content">
<h:form id="form">
<p:growl id="msgs" showDetail="true" />
<p:dataTable id="eventos" var="evento" value="#{eventoBean.eventos}">
<p:column headerText="Nome do Evento" style="width:100px">
<h:outputText value="#{evento.evento}" />
</p:column>
<p:column headerText="Data do Evento" style="width:100px">
<h:outputText value="#{evento.dataEvento}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Operações" style="width:100px">
<p:commandButton id="selectButton" update=":form:display"
oncomplete="eventDialog.show()" icon="ui-icon-search"
title="#{eventoBean.evento.evento}">
<f:setPropertyActionListener value="#{evento}"
target="#{eventoBean.evento }" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
<!-- FORM SEPARADOS -->
<p:dialog header="Visualizar eventos" widgetVar="eventDialog"
showEffect="fade" hideEffect="explode" modal="false" closeble="false">
<h:form id="display">
<h:panelGrid columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Evento:" />
<h:inputText value="#{eventoBean.evento.evento}" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
</html>
Managed Bean
package br.com.estudo.managedbeans;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.el.ELContext;
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.estudo.modelo.Evento;
import br.com.estudo.repository.EventoRepository;
@ManagedBean
public class EventoBean {
private Evento evento;
private List<Evento> eventos;
private List<Evento> eventocomplete;
private Evento eventoSelecionado;
public EventoBean() {
evento = new Evento();
eventos = new ArrayList<Evento>();
eventocomplete = 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) {
ELContext context = FacesContext.getCurrentInstance().getELContext();
FacesContext.getCurrentInstance().getApplication().getELResolver()
.getValue(context, null, "entityManager");
EventoRepository repository = new EventoRepository(getManager());
List<Evento> results = new ArrayList<Evento>();
if (eventocomplete.isEmpty()) {
this.eventocomplete = repository.complete();
}
for (Evento e : eventocomplete) {
if (e.getEvento().startsWith(query)) {
results.add(e);
}
}
return results;
}
public List<Evento> getEventos() {
ELContext context = FacesContext.getCurrentInstance().getELContext();
FacesContext.getCurrentInstance().getApplication().getELResolver()
.getValue(context, null, "entityManager");
if (this.eventos.isEmpty()) {
EventoRepository repository = new EventoRepository(getManager());
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;
}
public Evento getEvento() {
return evento;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public List<Evento> getEventocomplete() {
return eventocomplete;
}
public void setEventocomplete(List<Evento> eventocomplete) {
this.eventocomplete = eventocomplete;
}
public Evento getEventoSelecionado() {
return eventoSelecionado;
}
public void setEventoSelecionado(Evento eventoSelecionado) {
this.eventoSelecionado = eventoSelecionado;
setEvento(eventoSelecionado);
}
public void setEventos(List<Evento> eventos) {
this.eventos = eventos;
}
}
Meu repositório.
package br.com.estudo.repository;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.estudo.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();
}
}