Pessoal, estou tentando fazer com que a cada vez que o usuario clicar em “Visualizar”, obtenha uma janela modal com os dados correspondentes à linha, mas estou tendo um problema com o atributo “update”, por favor, me ajudem.
Esta é a exceção gerada
javax.servlet.ServletException: Cannot find component with identifier ":form:display" in view.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
br.com.estudo.filters.JPAFilter.doFilter(JPAFilter.java:33)
Esta é a minha página.
[code]<!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”>
<body>
<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}"
paginator="true" rows="5" paginatorPosition="bottom">
<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">
<h:panelGrid columns="3" styleClass="actions" cellpadding="2">
<p:commandButton id="selectButton"
oncomplete="eventDialog.show()" icon="ui-icon-search"
title="View">
<f:setPropertyActionListener value="#{evento}"
target="#{eventoBean.eventoSelecionado}" />
</p:commandButton>
</h:panelGrid>
</p:column>
</p:dataTable>
<p:dialog header="Visualizar eventos" widgetVar="eventDialog"
resizable="false" id="event" showEffect="fade" hideEffect="explode"
width="800" minHeight="600" modal="true">
<h:form id="dialog">
<h:panelGrid id="display" columns="2" cellpadding="4"
style="margin:0 auto;">
<h:outputText value="Evento:" />
<h:inputText value="#{eventoBean.evento.evento}" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
</body>
</html>[/code]
Este abaixo é meu ManagedBean.
[code]package br.com.managedbeans;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.el.ELContext;
import javax.faces.bean.SessionScoped;
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;
@SessionScoped
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;
}
public void setEventos(List<Evento> eventos) {
this.eventos = eventos;
}
}
[/code]