Boa noite,pessoal!
Sou novato na utilização do JSF e tenho o seguinte problema:
Estou fazendo uma aplicação JSF que exibe o cadastro de funcionarios. Mas na hora de passar os registros do funcionario para um dataTable, o arquivo jsp simplesmente não reconhece a variável funcionarios, do tipo Lista, criada no managedbean. E quando executo a aplicação, o Tomcat retorna o seguinte erro:
[i]type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /Funcionario.jsp(21,12) ‘#{FuncionarioFaces.funcionarios}’ Property ‘funcionarios’ not found on type desempenho.managedbeans.FuncionarioFaces
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.apache.jasper.el.JspPropertyNotFoundException: /Funcionario.jsp(21,12) ‘#{FuncionarioFaces.funcionario}’ Property ‘funcionario’ not found on type desempenho.managedbeans.FuncionarioFaces
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
javax.faces.component.UIData.getValue(UIData.java:582)
javax.faces.component.UIData.getDataModel(UIData.java:1063)
javax.faces.component.UIData.setRowIndex(UIData.java:417)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
javax.faces.component.UIData.encodeBegin(UIData.java:879)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.[/i]
Segue o código Funcionario.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Funcionário</title>
</head>
<body>
<f:view>
<h1><h:outputText value="Funcionários"/></h1>
<h:dataTable border="1" var="item" value="#{FuncionarioFaces.funcionarios}">
<h:column>
<f:facet name="header">
<h:outputText value="Código"/>
</f:facet>
<h:outputText value="#{item.CodFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{item.NomFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Data Nascimento"/>
</f:facet>
<h:outputText value="#{item.DatNasFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone"/>
</f:facet>
<h:outputText value="#{item.TelFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Sexo"/>
</f:facet>
<h:outputText value="#{item.SexFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CTPS"/>
</f:facet>
<h:outputText value="#{item.NumCTPSFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="INSS"/>
</f:facet>
<h:outputText value="#{item.NumINSSFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CPF"/>
</f:facet>
<h:outputText value="#{item.CPFFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="E-mail"/>
</f:facet>
<h:outputText value="#{item.EMailFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Data Contratação"/>
</f:facet>
<h:outputText value="#{item.DatConFun}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Código Departamento"/>
</f:facet>
<h:outputText value="#{item.CodDepFun}"/>
</h:column>
</h:dataTable>
</f:view>
</body>
</html>
E segue o codigo do managedbeans FuncionarioFaces.java
package desempenho.managedbeans;
import desempenho.dao.FuncionarioDAO;
import desempenho.db.Funcionario;
import java.sql.SQLException;
import java.util.List;
public class FuncionarioFaces {
private static final long serialVersionUID = 1L;
private FuncionarioDAO FunDAO = new FuncionarioDAO();
private Funcionario selectedFuncionario;
private List<Funcionario> funcionarios;
public FuncionarioFaces(){}
public String InicioInsereProduto(){
selectedFuncionario = new Funcionario();
return "NovoFuncionario";
}
public String FimInsereProduto() throws ClassNotFoundException, SQLException{
FunDAO.InserirFuncionario(selectedFuncionario);
//Limpa a variavel de cache
funcionarios = null;
return "ListaFuncionario";
}
public List<Funcionario> BuscaTodosFuncionarios() throws ClassNotFoundException, SQLException{
if(funcionarios == null){
funcionarios = FunDAO.ExibeFuncionarios();
}
return funcionarios;
}
public String InicioEditaFuncionario(){
return "ModificaFuncionario";
}
public String FimEditaFuncionario() throws ClassNotFoundException, SQLException{
FunDAO.AlterarFuncionario(selectedFuncionario);
//Limpa a variavel de cache
funcionarios = null;
return "ListaFuncionario";
}
public String RemoveFuncionario() throws ClassNotFoundException, SQLException{
FunDAO.ExcluirFuncionario(selectedFuncionario);
//Limpa a variavel de cache
funcionarios = null;
return "ListaFuncionario";
}
public Funcionario getSelectedFuncionario() {
return selectedFuncionario;
}
public void setSelectedFuncionario(Funcionario selectedFuncionario) {
this.selectedFuncionario = selectedFuncionario;
}
}
Preciso de uma solução urgente para esse problema…
Desde já, agradeço.