Estou desenvolvento um sistema com JSF 2.0, hibernate e Annotations.
Estou tentando preencher um datatable, mais está acontecendo o seguinte erro:
10/08/2011 19:19:56 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/curso/index.xhtml]
javax.el.PropertyNotFoundException: /curso/index.xhtml @54,94 value="#{cursoController.listarCursos}": Property 'listarCursos' not found on type br.com.sistema.controller.CursoController
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
Depois da FaseRENDER_RESPONSE 6
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:193)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:181)
at javax.faces.component.UIData.getValue(UIData.java:557)
at javax.faces.component.UIData.getDataModel(UIData.java:1297)
at javax.faces.component.UIData.setRowIndex(UIData.java:450)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:828)
at javax.faces.component.UIData.encodeBegin(UIData.java:940)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:52)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:229)
at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:152)
at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:75)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:883)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1659)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:853)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1652)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:399)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)
10/08/2011 19:19:56 com.sun.faces.renderkit.RenderKitUtils renderHtmlErrorPage
WARNING: JSF1087: Não foi possível gerar a página de erro de Facelets porque a resposta já foi enviada.
10/08/2011 19:19:56 com.sun.faces.renderkit.RenderKitUtils renderHtmlErrorPage
SEVERE: javax.faces.FacesException: /curso/index.xhtml @54,94 value="#{cursoController.listarCursos}": Property 'listarCursos' not found on type br.com.sistema.controller.CursoController
javax.faces.FacesException: /curso/index.xhtml @54,94 value="#{cursoController.listarCursos}": Property 'listarCursos' not found on type br.com.sistema.controller.CursoController
at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:140)
Controller:
/*
Nome: Dionatan Hovoruski
Data: 31/07/2011
Descrição:
*/
package br.com.sistema.controller;
import br.com.sistema.model.bean.Curso;
import br.com.sistema.model.dao.HibernateDAO;
import br.com.sistema.model.dao.InterfaceDAO;
import br.com.sistema.util.FacesContextUtil;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@SessionScoped
public class CursoController implements Serializable {
private Curso curso;
public CursoController() {
curso = new Curso();
}
public List<Curso> listarCursos() {
HibernateDAO<Curso> cursoDAO = new HibernateDAO<Curso>(Curso.class, FacesContextUtil.getRequestSession());
return cursoDAO.getBeans();
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
public void salvar() {
try {
InterfaceDAO<Curso> cursoDAO = new HibernateDAO<Curso>(Curso.class, FacesContextUtil.getRequestSession());
cursoDAO.salvar(curso);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Curso: " + curso.getDescricao() + " inserido com sucesso!"));
} catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Erro! Não foi possível inserir"));
e.getMessage();
}
}
}
Página XHTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" rel="stylesheet" href="../css/menu.css" />
<link rel="stylesheet" href="../css/principal.css" type="text/css"/>
<title>Cadastro de Cursos - sistema</title>
</h:head>
<h:body>
<div id="tudo">
<div id="menu_superior">
<div id="menu_usuario">New Winters School - Imbituva. Seja bem vindo(a) <a>Dionatan Hovoruski</a>.</div>
<div id="menu_sair"><a href="#">Sair</a></div>
<div></div>
</div>
<div id="topo">
<div id="logo_sistema"><p href="index.jsp" alt="sistema"></p></div>
<div id="logo_empresa"></div>
</div>
<ui:include src="../menu.xhtml"/>
<div id="geral">
<div id="conteudo">
<div id="menu_busca">
<p>Cursos</p>
<br/>
<br/>
<h:form>
<h:panelGroup>
<h:outputText value="Código:" style="margin: 10px 0px 0px 15px"/>
<p:inputText title="Código" label="Código" style="margin: 10px 0px 0px 5px; width: 120px" converter="conversor"/>
<h:outputText value="Curso:" style="margin: 10px 0px 0px 5px"/>
<p:inputText title="Curso" label="Curso" style="margin: 10px 0px 0px 5px; width: 440px" converter="conversor"/>
<p:commandButton style="margin-left: 10px;" value="Buscar" image="ui-icon ui-icon-search" process="@all" update="msgs"/>
</h:panelGroup>
</h:form>
</div>
<h:form style="margin-top: 5px;">
<h:panelGroup>
<p:commandButton value="Inserir" image="ui-icon ui-icon-plus" action="#{cursoController.listarCursos}" update="msgs"/>
<p:commandButton value="Excluir" style="margin-left: 10px;" image="ui-icon ui-icon-minus"/>
<p:commandButton value="Alterar" style="margin-left: 10px;" image="ui-icon ui-icon-pencil" update="msgs"/>
</h:panelGroup>
<p:panel header="Cursos" style="height: 100%; margin-top: 5px;">
<h:dataTable value="#{cursoController.listarCursos}" var="curso">
<!-- <p:tooltip global="true"/>
<p:column selectionMode="single" /> -->
<h:column>
<f:facet name="header">
Código
</f:facet>
<h:outputText value="#{curso.id}"/>
</h:column>
<h:column>
<f:facet name="header">
Curso
</f:facet>
<h:outputText value="#{curso.descricao}"/>
</h:column>
</h:dataTable>
</p:panel>
</h:form>
</div>
<div id="clear"></div>
</div>
<div id="rodape">
<p>sistema 2011 - Todos os direitos reservados.</p>
</div>
</div>
</h:body>
</html>