Boa pessoal,
É o seguinte, estou desenvolvendo um sistema em JSF2 e tenho uma pagina que não renderiza por causa do bean. O que estou fazendo de errado, não enxergo?
Os beans e os xhtml:
beans:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.tmd.controlefinanceiro.bean;
import br.com.tmd.controlefinanceiro.modelo.Conta;
import br.com.tmd.controlefinanceiro.modelo.Despesa;
import br.com.tmd.controlefinanceiro.modelo.Pagamento;
import br.com.tmd.controlefinanceiro.persistence.ContaDao;
import br.com.tmd.controlefinanceiro.persistence.DespesaDao;
import br.com.tmd.controlefinanceiro.persistence.PagamentoDao;
import java.util.Calendar;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "pagamentoBean")
@RequestScoped
public class PagamentoBean {
private Pagamento pagamento = new Pagamento();
private Double valor;
private Calendar dataPagamento;
@ManagedProperty(value = "#{contaBean}")
private ContaBean contaBean;
@ManagedProperty(value = "#{despesaBean}")
private DespesaBean despesaBean;
public PagamentoBean() {
}
public String deduzConta() throws Exception{
ContaDao contaDao = new ContaDao();
Conta contaManipulada;
contaManipulada = contaDao.findByCod(contaBean.getContaId());
contaManipulada.setSaldo(contaManipulada.getSaldo() - this.valor);
contaDao.alterar(contaManipulada);
DespesaDao despesaDao = new DespesaDao();
Despesa despesa;
despesa = despesaDao.findByCod(despesaBean.getDespesaId());
PagamentoDao pagamentoDao = new PagamentoDao();
Pagamento pago = null;
pago.setDataPagamento(dataPagamento);
pago.setValorPago(valor);
pago.setDespesa(despesa);
pagamentoDao.salvar(pago);
return "lancadespesa?faces-redirect=true";
}
public String depositaValor() throws Exception{
ContaDao contaDao = new ContaDao();
Conta contaManipulada;
contaManipulada = contaDao.findByCod(contaBean.getContaId());
contaManipulada.setSaldo(contaManipulada.getSaldo() + this.valor);
contaDao.alterar(contaManipulada);
return "lancadespesa?faces-redirect=true";
}
public Pagamento getPagamento() {
return pagamento;
}
public void setPagamento(Pagamento pagamento) {
this.pagamento = pagamento;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public Calendar getDataPagamento() {
return dataPagamento;
}
public void setDataPagamento(Calendar dataPagamento) {
this.dataPagamento = dataPagamento;
}
public ContaBean getContaBean() {
return contaBean;
}
public void setContaBean(ContaBean contaBean) {
this.contaBean = contaBean;
}
public String novo() {
return "cliente?faces-redirect=true";
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.tmd.controlefinanceiro.bean;
import br.com.tmd.controlefinanceiro.modelo.Conta;
import br.com.tmd.controlefinanceiro.persistence.ContaDao;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
@ManagedBean(name = "contaBean")
@RequestScoped
public class ContaBean {
private Conta conta = new Conta();
private List<Conta> listaContas;
private Integer contaId;
public ContaBean() {
}
public Integer getContaId() {
return contaId;
}
public void setContaId(Integer contaId) {
this.contaId = contaId;
}
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
public List<Conta> getListaContas() throws Exception {
ContaDao dao = new ContaDao();
listaContas = dao.listaContas();
return listaContas;
}
public void setListaContas(List<Conta> listaContas) {
this.listaContas = listaContas;
}
public String novo() {
this.conta = new Conta();
return "contas?faces-redirect=true";
}
public String novo1() {
return "transferencias?faces-redirect=true";}
public String salvar(){
FacesContext context = FacesContext.getCurrentInstance();
ContaDao dao = new ContaDao();
dao.salvar(conta);
FacesMessage facesMessage = new FacesMessage("Conta criada com sucesso");
context.addMessage(null, facesMessage);
this.conta = new Conta();
//return "contas?faces-redirect=true";
return null;
}
public String formPrincipal() {
return "principal?faces-redirect=true";
}
public String consultaContas() {
return "consultaContas?faces-redirect=true";
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.tmd.controlefinanceiro.bean;
import br.com.tmd.controlefinanceiro.modelo.Despesa;
import br.com.tmd.controlefinanceiro.persistence.DespesaDao;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
@ManagedBean(name = "despesaBean")
@RequestScoped
public class DespesaBean {
private Despesa despesa = new Despesa();
private List<Despesa> listaDespesa;
//Foi criado essa variavel para ao selecionarmos uma despesa armazena o id dela para
//gravarmos no banco posteriormente.
private Integer despesaId;
public DespesaBean() {
}
public Integer getDespesaId() {
return despesaId;
}
public void setDespesaId(Integer despesaId) {
this.despesaId = despesaId;
}
public Despesa getDespesa() {
return despesa;
}
public void setDespesa(Despesa despesa) {
this.despesa = despesa;
}
//Utilizado para carregar o combo box tambem
public List<Despesa> getListaDespesa() {
DespesaDao dao = new DespesaDao();
listaDespesa = dao.listaDespesas();
return listaDespesa;
}
public void setListaDespesa(List<Despesa> listaDespesa) {
this.listaDespesa = listaDespesa;
}
public String salvar(){
FacesContext context = FacesContext.getCurrentInstance();
DespesaDao dao = new DespesaDao();
dao.salvar(despesa);
FacesMessage facesMessage = new FacesMessage("Despesa criada com sucesso");
context.addMessage(null, facesMessage);
this.despesa = new Despesa();
//return "contas?faces-redirect=true";
return null;
}
public String formPrincipal() {
return "principal?faces-redirect=true";
}
public String consultaDespesas() {
return "consultaDespesas?faces-redirect=true";
}
public String novo() {
return "despesas?faces-redirect=true";
}
}
<?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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/templates/_template.xhtml">
<ui:define name="titulo">
<h3>Lançamento de Despesas</h3>
</ui:define>
<ui:define name="conteudo">
<p:growl autoUpdate="true" />
<h:form>
<p:messages id="messages" autoUpdate="true" />
<p:fieldset legend="Dados da Operação - Despesa" styleClass="fieldsetSms">
<h:panelGrid columns="2">
<h:outputLabel value="Despesa:" for="despesa" styleClass="rotulos" />
<h:selectOneMenu id="despesa" value="#{despesaBean.despesaId}">
<f:selectItem itemLabel="Selecione a despesa" />
<f:selectItems value="#{despesaBean.listaDespesa}" var="despesa"
itemLabel="#{despesa.descricao}" itemValue="#{despesa.id}"/>
</h:selectOneMenu>
<h:outputLabel value="Conta:" for="conta" styleClass="rotulos" />
<h:selectOneMenu id="conta" value="#{contaBean.contaId}">
<f:selectItem itemLabel="Selecione a conta" />
<f:selectItems value="#{contaBean.listaContas}" var="conta"
itemLabel="#{conta.descricao}" itemValue="#{conta.id}"/>
</h:selectOneMenu>
<h:outputLabel value="Valor:" for="valor" styleClass="rotulos"/>
<p:inputText id="valor" value="#{pagamentoBean.valor}" required="true"
requiredMessage="Campo valor obrigatorio" >
<f:ajax event="blur" render="messages" />
</p:inputText>
<h:outputLabel value="Data: " for="dtpg" styleClass="rotulos"/>
<p:calendar id="dtpg"
value="#{pagamentoBean.dataPagamento}"
pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"
required="true"
requiredMessage="Data obrigatória" >
<f:ajax event="blur" render="messages" />
</p:calendar>
</h:panelGrid>
</p:fieldset>
</h:form>
</ui:define>
</ui:composition>
</html>