Pessoal, sou novo em Java e estou estudando. Estou fazendo um exemplo e a inclusão e exclusão estava OK até que fiz a alteração, ai a inclusão , quando vou clicar para gravar, nao funciona mais. Dá o seguinte erro:
javax.el.PropertyNotFoundException: /CidadesCadastro.xhtml @29,162 value="#{cidadesCadastroBean.cidades.CID_NOME}": Target Unreachable, ‘cidades’ returned null
Menu 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:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<f:metadata>
<f:viewParam name="CID_CODIGO" value="#{cidadesCadastroBean.cidades}" />
</f:metadata>
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Cidades</title>
</h:head>
<h:body>
<h1>Cadastro de Cidades</h1>
<h:form id="frm">
<h:button value="Lista de Cidades" outcome="CidadesLista"/>
<h:panelGrid columns="2" styleClass="formulario" columnClasses="label,campo">
<h:outputLabel value="Nome"/>
<h:inputText value="#{cidadesCadastroBean.cidades.CID_NOME}" size="70" required="true" requiredMessage="O Nome deve ser preenchido" label="Nome da Cidade"/>
<h:outputLabel value="UF"/>
<h:inputText value="#{cidadesCadastroBean.cidades.CID_UF}" size="10" required="true" requiredMessage="O UF deve ser preenchido" label="UF"/>
<h:outputLabel/>
<h:commandButton value="Cadastrar" action="#{cidadesCadastroBean.cadastrar}" />
</h:panelGrid>
</h:form>
</h:body>
</html>
Meu Bean:
package view;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import model.Cidades;
import repository.CidadesRepository;
import repository.infra.CidadesHibernate;
import util.Repositorios;
@ManagedBean
@ViewScoped
public class CidadesCadastroBean implements Serializable {
private Repositorios repositorios = new Repositorios();
private Cidades cidades = new Cidades();
public String cadastrar(){
CidadesRepository cidades = this.repositorios.getCidades();
cidades.gravar(this.cidades);
return "CidadesLista";
}
public Cidades getCidades() {
return cidades;
}
public void setCidades(Cidades cidades) {
this.cidades = cidades;
}
}
Meu converter:
package converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import repository.CidadesRepository;
import util.Repositorios;
import model.Cidades;
@FacesConverter(forClass=Cidades.class)
public class CidadesConverter implements Converter {
private Repositorios repositorios = new Repositorios();
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Cidades retorno = null;
CidadesRepository cidades = repositorios.getCidades();
if (value != null && !value.equals("")) {
retorno = cidades.porCodigo(new Integer(value));
}
return retorno;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Integer codigo = ((Cidades) value).getCID_CODIGO();
return codigo == null ? "" : codigo.toString();
}
return null;
}
}
Agradeço desde já a ajuda de todos !