Fala galera tudo bem?
Em primeiro lugar gostaria de agradecer a ajuda de todos aqui pois so estou conseguindo andar com o java graças a voces.
Pessoal estou com um probleminha aqui.
bom vamos la fiz o arquivo cadastroConta.jsp
<%@ page contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<title>Cadastro de conta</title>
<link rel="stylesheet" type="text/css" href="../css/estilo.css" />
</head>
<body>
<f:view>
<h:form id="frm">
<h1><h:outputText value="Cadastro de conta"/></h1>
<h:messages layout="table" showSummary="true"
showDetail="false" globalOnly="true"
styleClass="msgErro" infoClass="msgInfo"
style="font-weight: bold"/>
<h:panelGrid columns="2">
<h:outputLabel value="Código:"
rendered="#{cadastroContaBean.contaEdicao.id!= null}"/>
<h:panelGroup
rendered="#{cadastroContaBean.contaEdicao.id
!= null}">
<h:inputText id="codigo" size="10"
value="#{cadastroContaBean.contaEdicao.id}"
label="Código da conta" disabled="true"/>
<h:message for="codigo" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:outputLabel value="Pessoa:"/>
<h:panelGroup>
<h:selectOneMenu id="pessoa" value="#{cadastroContaBean.contaEdicao.pessoa}" label="Pessoa" required="true">
<f:selectItems value="#{cadastroContaBean.pessoas}"/>
</h:selectOneMenu>
<h:message for="pessoa" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:outputLabel value="Tipo:"/>
<h:panelGroup>
<h:selectOneRadio id="tipo"
value="#{cadastroContaBean.contaEdicao.tipo}"
label="Tipo da conta" required="true">
<f:selectItems
value="#{cadastroContaBean.tiposLancamentos}"/>
</h:selectOneRadio>
<h:message for="tipo" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:outputLabel value="Descrição:"/>
<h:panelGroup>
<h:inputText id="descricao" size="40"
maxlength="150"
value="#{cadastroContaBean.contaEdicao.descricao}"
required="true" label="Descrição"/>
<h:message for="descricao" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:outputLabel value="Valor:"/>
<h:panelGroup>
<h:inputText id="valor" size="12"
maxlength="10"
value="#{cadastroContaBean.contaEdicao.valor}"
required="true" label="Valor">
<f:convertNumber minFractionDigits="2"/>
</h:inputText>
<h:message for="valor" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:outputLabel value="Data vencimento:"/>
<h:panelGroup>
<h:inputText id="dataVencimento" size="12"
maxlength="10"
value="#{cadastroContaBean.contaEdicao.dataVencimento}" required="true"
label="Data vencimento">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:message for="dataVencimento" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:outputLabel value="Data baixa:"/>
<h:panelGroup>
<h:inputText id="dataBaixa" size="12"
maxlength="10"
value="#{cadastroContaBean.contaEdicao.dataBaixa}"
label="Data baixa">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:message for="dataBaixa" showSummary="true"
showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
<h:panelGroup/>
<h:panelGroup>
<h:commandButton value="Salvar"
actionListener="#{cadastroContaBean.salvar}"
styleClass="botao"/>
<h:commandButton value="Cancelar" action="menu"
immediate="true" styleClass="botao"/>
</h:panelGroup>
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
Fiz o bean dele que é o cadastroContaBean:
package com.algaworks.dwjsf.financeiro.visao;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import java.util.ArrayList;
import java.util.List;
import com.algaworks.dwjsf.financeiro.dominio.Conta;
import com.algaworks.dwjsf.financeiro.dominio.Pessoa;
import com.algaworks.dwjsf.financeiro.dominio.TipoConta;
import com.algaworks.dwjsf.financeiro.negocio.ContaService;
import com.algaworks.dwjsf.financeiro.negocio.PessoaService;
import com.algaworks.dwjsf.financeiro.negocio.RegraNegocioException;
public class cadastroContaBean {
private Conta contaEdicao;
private List<SelectItem> tiposContas;
private List<SelectItem> pessoas;
public String inicializar() {
this.contaEdicao = new Conta();
this.tiposContas = null;
this.pessoas = null;
return "cadastroConta";
}
public void salvar(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
try {
new ContaService().salvar(this.contaEdicao);
this.contaEdicao = new Conta();
FacesMessage msg = new FacesMessage(
"Conta salva com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
} catch (RegraNegocioException e) {
context.addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_ERROR,
e.getMessage(), e.getMessage()));
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao salvar conta!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
}
public List<SelectItem> getPessoas() {
if (this.pessoas == null) {
this.pessoas = new ArrayList<SelectItem>();
List<Pessoa> pessoas = new PessoaService()
.listarTodas();
this.pessoas.add(new SelectItem(null, "Selecione"));
for (Pessoa pessoa : pessoas) {
this.pessoas.add(new SelectItem(pessoa,
pessoa.getNome()));
}
}
return this.pessoas;
}
public List<SelectItem> getTiposLancamentos() {
if (this.tiposContas == null) {
this.tiposContas = new ArrayList<SelectItem>();
for (TipoConta tipo : TipoConta.values()) {
this.tiposContas.add(new SelectItem(tipo,
tipo.toString()));
}
}
return tiposContas;
}
public Conta getContaEdicao() {
return contaEdicao;
}
public void setContaEdicao(Conta contaEdicao) {
this.contaEdicao = contaEdicao;
}
}
fiz a configuração no xml do faces:
<managed-bean>
<managed-bean-name>cadastroContaBean</managed-bean-name>
<managed-bean-class>com.algaworks.dwjsf.financeiro.visao.cadastroContaBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Quando clico em salvar ele retorna com este erro:
exception
javax.servlet.ServletException: /contas/cadastroConta.jsp(32,0) '#{cadastroContaBean.contaEdicao.pessoa}' Target Unreachable, 'contaEdicao' returned null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)
root cause
org.apache.jasper.el.JspPropertyNotFoundException: /contas/cadastroConta.jsp(32,0) '#{cadastroContaBean.contaEdicao.pessoa}' Target Unreachable, 'contaEdicao' returned null
org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:202)
com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:319)
javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
javax.faces.component.UIInput.validate(UIInput.java:960)
javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
javax.faces.component.UIInput.processValidators(UIInput.java:698)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
javax.faces.component.UIForm.processValidators(UIForm.java:253)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
Me parece que o erro é nesta linda do arquivo CadastroConta
<h:selectOneMenu id="pessoa" value="#{cadastroContaBean.contaEdicao.pessoa}" label="Pessoa" required="true">
Alguem sabe me dizer onde esta o problema?
Obrigado!