Bom dia pessoal,
Sou voco no Java e estou desenvolvendo uma aplicação para controle de demanda.
Fiz uma classe Demanda, uma DemandaBM a classe DemandaDao.
O formulário que fuica no xhtml eu tenho calendarios, combos e caixa de textos.
O método que faz a persistência no banco (MySql) chama-se gravarDemanda e é acionado por um commandbutton.
Quando starto a aplicação aparece o erro abaixo:
Grave: Error Rendering View[/pages/index.xhtml]
javax.el.PropertyNotFoundException: Property 'gravar' not found on type br.com.bb.uro.AgendaControleDemandas.MB.DemandaMB
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
at javax.el.BeanELResolver.property(BeanELResolver.java:317)
Jun 13, 2016 12:18:52 PM com.sun.faces.context.ExceptionHandlerImpl throwIt
Informações: Exception when handling error trying to reset the response.
javax.el.PropertyNotFoundException: Property 'gravar' not found on type br.com.bb.uro.AgendaControleDemandas.MB.DemandaMB
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
at javax.el.BeanELResolver.property(BeanELResolver.java:317)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
javax.servlet.ServletException: Property 'gravar' not found on type br.com.bb.uro.AgendaControleDemandas.MB.DemandaMB
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
Caused by: javax.el.PropertyNotFoundException: Property 'gravar' not found on type br.com.bb.uro.AgendaControleDemandas.MB.DemandaMB
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
at javax.el.BeanELResolver.property(BeanELResolver.java:317)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
Jun 13, 2016 12:18:52 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [FacesServlet] in context with path [/AgendaControleDemandas] threw exception [javax.servlet.ServletException: Property 'gravar' not found on type br.com.bb.uro.AgendaControleDemandas.MB.DemandaMB] with root cause
javax.el.PropertyNotFoundException: Property 'gravar' not found on type br.com.bb.uro.AgendaControleDemandas.MB.DemandaMB
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
at javax.el.BeanELResolver.property(BeanELResolver.java:317)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
// Tirei parte do final dor erros para diminuir o post
Demanda
import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
// @Cacheable(false)
@Table(name = "tblDemanda")
// @NamedQuery(name = "Demanda.findAll", query = "select d from tblDemanda")
public class Demanda implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final String FIND_ID = "Demanda.findId";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String descricao;
private Integer finalizado;
private Integer idTipoDemanda;
private Integer idStatus;
@Temporal(TemporalType.DATE)
private Calendar dataInicio;
@Temporal(TemporalType.DATE)
private Calendar dataVencimento;
@Temporal(TemporalType.DATE)
private Calendar dataAtendimento;
private Integer prazo;
private Integer idAssessor;
private Integer idGerente;
// Getters e Setterr foram tirados para diminuir o post
DemandaDAO
package br.com.bb.uro.AgendaControleDemandas.DAO;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import br.com.bb.uro.AgendaControleDemandas.modelo.Demanda;
public class DemandaDAO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private transient Connection connection;
public DemandaDAO() {
this.connection = new ConectionFactory().Conecta();
}
// Datas
Calendar data = Calendar.getInstance();
// LISTA DEMANDA
public List<Demanda> getLista() {
try {
List<Demanda> demandas = new ArrayList<Demanda>();
PreparedStatement stmt = connection
.prepareStatement("SELECT * FROM tblDemanda");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Demanda demanda = new Demanda();
demanda.setIdStatus(rs.getInt("idStatus"));
demanda.setIdTipoDemanda(rs.getInt("idTipoDemanda"));
//dataInicio
data.setTime(rs.getDate("dataInicio"));
demanda.setDataInicio(data);
//dataVencimento
data.setTime(rs.getDate("dataVencimento"));
demanda.setDataVencimento(data);
//dataAtendimento
data.setTime(rs.getDate("dataAtendimento"));
demanda.setDataAtendimento(data);
// demanda.setDataInicio(rs.getDate("dataInicio"));
// demanda.setDataVencimento(rs.getDate("dataVencimento"));
// demanda.setDataAtendimento(rs.getDate("dataAtendimento"));
demanda.setDescricao(rs.getString("descricao"));
demanda.setFinalizado(rs.getInt("finalizado"));
demanda.setIdAssessor(rs.getInt("idAssessor"));
demanda.setIdGerente(rs.getInt("idGerente"));
demanda.setPrazo(rs.getInt("prazo"));
demanda.setId(rs.getLong("id"));
demandas.add(demanda);
}
rs.close();
stmt.close();
return demandas;
} catch (SQLException u) {
throw new RuntimeException(u);
}
}
// ADICIONA ALTERA
public void altera(Demanda demanda) {
String sql = "UPDATE tblDemanda SET idStatus=?, idTipoDemanda=?, dataInicio=?, dataVencimento=?, dataAtendimento=?, Descricao=?, Finalizado=?, idAssessor=?, idGerente=?, Prazo=? WHERE iD=?";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setInt(1, demanda.getIdStatus());
stmt.setInt(2, demanda.getIdTipoDemanda());
stmt.setDate(3, new Date(demanda.getDataInicio().getTimeInMillis()));
stmt.setDate(3, new Date(demanda.getDataVencimento().getTimeInMillis()));
stmt.setDate(3, new Date(demanda.getDataAtendimento().getTimeInMillis()));
stmt.setString(6, demanda.getDescricao());
stmt.setInt(7, demanda.getFinalizado());
stmt.setInt(8, demanda.getIdAssessor());
stmt.setInt(9, demanda.getIdGerente());
stmt.setInt(10, demanda.getPrazo());
stmt.setLong(11, demanda.getId());
stmt.execute();
stmt.close();
} catch (SQLException u) {
throw new RuntimeException(u);
}
}
// EXCLUI DEMANDA
public void exclui(Demanda demanda) {
String sql = "DELETE FROM tblDemanda WHERE id=?";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setLong(1, demanda.getId());
stmt.execute();
stmt.close();
} catch (SQLException u) {
throw new RuntimeException(u);
}
}
// ADICIONA DEMANDA
public void adiciona(Demanda demanda) {
String sql = "INSERT INTO tblDemanda (idStatus, idTipoDemanda, dataInicio, dataVencimento, dataAtendimento, Descricao, Finalizado, idAssessor, idGerente, Prazo) VALUES(?,?,?,?,?,?,?,?,?,?)";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setInt(1, demanda.getIdStatus());
stmt.setInt(2, demanda.getIdTipoDemanda());
stmt.setDate(3, new Date(demanda.getDataInicio().getTimeInMillis()));
stmt.setDate(3, new Date(demanda.getDataVencimento().getTimeInMillis()));
stmt.setDate(3, new Date(demanda.getDataAtendimento().getTimeInMillis()));
stmt.setString(6, demanda.getDescricao());
stmt.setInt(7, demanda.getFinalizado());
stmt.setInt(8, demanda.getIdAssessor());
stmt.setInt(9, demanda.getIdGerente());
stmt.setInt(10, demanda.getPrazo());
stmt.execute();
stmt.close();
} catch (SQLException u) {
throw new RuntimeException(u);
}
}
}
DemandaMD
package br.com.bb.uro.AgendaControleDemandas.MB;
import java.util.Calendar;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import br.com.bb.uro.AgendaControleDemandas.DAO.DemandaDAO;
import br.com.bb.uro.AgendaControleDemandas.DAO.FuncionarioDAO;
import br.com.bb.uro.AgendaControleDemandas.DAO.StatusDAO;
import br.com.bb.uro.AgendaControleDemandas.DAO.TipoDemandaDAO;
import br.com.bb.uro.AgendaControleDemandas.modelo.Demanda;
import br.com.bb.uro.AgendaControleDemandas.modelo.Funcionario;
import br.com.bb.uro.AgendaControleDemandas.modelo.Status;
import br.com.bb.uro.AgendaControleDemandas.modelo.TipoDemanda;
@SessionScoped
@ManagedBean(name = "demanda")
public class DemandaMB {
private List<Status> listaStatus;
private List<TipoDemanda> listaTipoDemanda;
private List<Funcionario> listaFunci;
private List<Funcionario> listaFunciDivisao;
private List<Funcionario> listaAssessor;
private List<Funcionario> listaGerente;
private DateTime dtInicial;
private DateTime dtFinal;
private Integer qtdDias;
// Variáveis da página
private String descricao;
private Boolean finalizado;
private Integer idTipo;
private Integer idStatus;
private Calendar dataInicio;
private Calendar dataVencimento;
private Calendar dataAtendimento;
private Integer prazo = 10;
private Integer idAssessor;
private Integer idGerente;
// GRAVAR DADOS
public void gravarDemanda() {
Demanda demanda = new Demanda();
DemandaDAO demandaDAO = new DemandaDAO();
System.out.println("inicia gravar ");
Integer intFinalizado;
if (finalizado = true) {
intFinalizado = 1;
} else {
intFinalizado = 0;
}
demanda.setIdStatus(idStatus);
demanda.setIdTipoDemanda(idTipo);
// Datas
demanda.setDataInicio(getDataInicio());
demanda.setDataVencimento(getDataVencimento());
demanda.setDataAtendimento(getDataAtendimento());
demanda.setFinalizado(intFinalizado);
demanda.setPrazo(prazo);
demanda.setIdAssessor(idAssessor);
demanda.setIdGerente(idGerente);
demanda.setDescricao(descricao);
System.out.println("preencheu objeto e vai gravar");
demandaDAO.adiciona(demanda);
System.out.println("voltou da gravação");
}
// Preenche combos
public void funciDivisao() {
FuncionarioDAO dao = new FuncionarioDAO();
listaFunci = dao.getListaFunciDivisao(this.getIdGerente());
;
this.getListaFunciDivisao();
}
public List<Funcionario> getListaFunciDivisao() {
FuncionarioDAO dao = new FuncionarioDAO();
listaFunciDivisao = dao.getListaFunciDivisao(this.getIdGerente());
return listaFunciDivisao;
}
public List<Status> getListaStatus() {
StatusDAO dao = new StatusDAO();
listaStatus = dao.getLista();
return listaStatus;
}
public List<TipoDemanda> getListaTipoDemanda() {
TipoDemandaDAO dao = new TipoDemandaDAO();
listaTipoDemanda = dao.getLista();
return listaTipoDemanda;
}
public List<Funcionario> getListaFunci() {
FuncionarioDAO dao = new FuncionarioDAO();
listaFunci = dao.getLista();
return listaFunci;
}
public List<Funcionario> getListaAssessor() {
FuncionarioDAO dao = new FuncionarioDAO();
listaAssessor = dao.getListaAssessor();
return listaAssessor;
}
public List<Funcionario> getListaGerente() {
FuncionarioDAO dao = new FuncionarioDAO();
listaGerente = dao.getListaGerente();
return listaGerente;
}
@SuppressWarnings("unused")
private Integer DiasEntreDatas() {
Duration dur = new Duration(dtInicial, dtFinal);
qtdDias = (int) dur.getStandardDays();
return qtdDias;
}
public DateTime getDtInicial() {
return dtInicial;
}
public void setDtInicial(DateTime dtInicial) {
this.dtInicial = dtInicial;
}
public DateTime getDtFinal() {
return dtFinal;
}
public void setDtFinal(DateTime dtFinal) {
this.dtFinal = dtFinal;
}
public Integer getQtdDias() {
return qtdDias;
}
public void setQtdDias(Integer qtdDias) {
this.qtdDias = qtdDias;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Boolean getFinalizado() {
return finalizado;
}
public void setFinalizado(Boolean finalizado) {
this.finalizado = finalizado;
}
public Integer getIdTipo() {
return idTipo;
}
public void setIdTipo(Integer idTipo) {
this.idTipo = idTipo;
}
public Integer getIdStatus() {
return idStatus;
}
public void setIdStatus(Integer idStatus) {
this.idStatus = idStatus;
}
public Calendar getDataInicio() {
return dataInicio;
}
public void setDataInicio(Calendar dataInicio) {
this.dataInicio = dataInicio;
}
public Calendar getDataVencimento() {
return dataVencimento;
}
public void setDataVencimento(Calendar dataVencimento) {
this.dataVencimento = dataVencimento;
}
public Calendar getDataAtendimento() {
return dataAtendimento;
}
public void setDataAtendimento(Calendar dataAtendimento) {
this.dataAtendimento = dataAtendimento;
}
public Integer getPrazo() {
return prazo;
}
public void setPrazo(Integer prazo) {
this.prazo = prazo;
}
public Integer getIdAssessor() {
return idAssessor;
}
public void setIdAssessor(Integer idAssessor) {
this.idAssessor = idAssessor;
}
public Integer getIdGerente() {
return idGerente;
}
public void setIdGerente(Integer idGerente) {
this.idGerente = idGerente;
}
}
xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Agenda de Cadastro de Demandas</title>
<link rel="stylesheet" href="../css/style.css" />
<link rel="stylesheet" href="../css/stylepage.css" />
<link rel="stylesheet" href="../css/styleform.css" />
<!--
<link rel="stylesheet"
href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>
-->
<script>
$(function() {
$("#tabs").tabs();
});
</script>
</h:head>
<ui:composition template="template.xhtml">
<ui:define name="pageTitle">Agenda de Controle de Demandas</ui:define>
<ui:define name="pageHeader">Cadastro de Demandas</ui:define>
<ui:define name="body">
<div id="cabecalho">
<div id="lateral_base">
<div id="topo_base">
<div id="titulo">
<a href="https://uro.bb.com.br"></a>
</div>
</div>
<div id="topo">
<div id="topo_menu">
<ul>
<li><a
href="https://portal.intranet.bb.com.br/wps/myportal/intranet">Intranet</a></li>
<li><a
href="https://login.intranet.bb.com.br/distAuth/UI/Logout">Sair</a></li>
</ul>
</div>
<div id="topo_menu2">
Agenda de Cadastro de Demandas<label style="float: right;">#confidencial</label>
</div>
</div>
</div>
</div>
<div id="tabs" class="container" align="left" style="">
<ul>
<li><a href="#tabs-1">Cadastrar</a></li>
<li><a href="#tabs-2">Consultar</a></li>
<li><a href="#tabs-3">Alterar</a></li>
</ul>
<div id="tabs-1">
<h:form id="form">
<div align="left">
<h:panelGrid columns="2" style="margin-bottom:10px"
cellpadding="10" align="left">
<p:outputLabel id="label-status" for="status" value="Status:" />
<p:selectOneMenu id="status" value="#{demanda.idStatus}" style="width:150px">
<f:selectItem itemLabel="Sel..." itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{demanda.listaStatus}" var="lista"
itemLabel="#{lista.status}" itemValue="#{lista.id}" />
</p:selectOneMenu>
<p:outputLabel id="label-tipo" for="tipo" value="Tipo:" />
<p:selectOneMenu id="tipo" value="#{demanda.idTipo}"
style="width:150px">
<f:selectItem itemLabel="Sel..." itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{demanda.listaTipoDemanda}" var="lista"
itemLabel="#{lista.tipoDemanda}" itemValue="#{lista.id}" />
</p:selectOneMenu>
<p:outputLabel id="label-inicio" for="inicio"
value="Data de Início:" />
<p:calendar id="inicio" showOn="button" effect="slide"
pattern="dd/MM/yyyy" showButtonPanel="false"
showOtherMonths="true" showWeek="false" navigator="true"
styleClass="emissao" locale="pt" value="#{demanda.dataInicio}" />
<p:outputLabel id="label-vencimento" for="vencimento"
value="Data de Vencimento" />
<p:calendar id="vencimento" showOn="button" effect="slide"
pattern="dd/MM/yyyy" showButtonPanel="false"
showOtherMonths="true" showWeek="false" navigator="true"
styleClass="vencimento" locale="pt"
value="#{demanda.dataVencimento}" />
<p:outputLabel id="label-atendimento" for="atendimento"
value="Data para Atendimento" />
<p:calendar id="atendimento" showOn="button" effect="slide"
pattern="dd/MM/yyyy" showButtonPanel="false"
showOtherMonths="true" showWeek="false" navigator="true"
styleClass="atendimento" locale="pt"
value="#{demanda.dataAtendimento}" />
<p:outputLabel id="label-finalizado" for="finalizado"
value="Finalizado:" />
<p:selectBooleanButton id="finalizado" onLabel="Sim"
offLabel="Não" style="width:60px" value="#{demanda.finalizado}" />
<p:outputLabel id="label-gerente" for="gerente" value="Gerente:" />
<p:selectOneMenu id="gerente" value="#{demanda.idGerente}"
style="width:300px">
<f:selectItem itemLabel="Sel..." itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{demanda.listaGerente}" var="lista"
itemLabel="#{lista.nome}" itemValue="#{lista.id}" />
<p:ajax event="change" listener="#{demanda.funciDivisao}"
update=":form:assessor" />
</p:selectOneMenu>
<p:outputLabel id="label-assessor" for="assessor"
value="Assessor:" />
<p:selectOneMenu id="assessor" value="#{demanda.idAssessor}"
style="width:300px">
<f:selectItem itemLabel="Sel..." itemValue=""
noSelectionOption="true" />
<f:selectItems var="lista" value="#{demanda.listaFunciDivisao}"
itemLabel="#{lista.nome}" itemValue="#{lista.id}" />
</p:selectOneMenu>
<p:outputLabel id="label-descricao" for="descricao"
value="Descrição:" />
<p:inputTextarea id="descricao" cols="100" rows="10"
value="#{demanda.descricao}" />
</h:panelGrid>
<p:commandButton styleClass="botaogravar" id="botaoGravar" value="Gravar" actionListener="#{demanda.gravarDemanda}"/>
</div>
</h:form>
</div>
<div id="tabs-2">
<p>Consultar.</p>
</div>
<div id="tabs-3">
<p>Alterar.</p>
</div>
</div>
</ui:define>
</ui:composition>
</html>
Algém pode me ajudar? Estou desesperado e não sei mais o que fazer, já pesquisei em meio mundo de forum e nada.