Target Unreachable, 'cidades' returned null

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 !