Inserir com jsf e primefaces

Tenho um form de cadastro de usuário em jsf e primefaces. É o meu primeiro form com jsf e tá dando problema ao inserir.

cadusuario.jsf

<?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:ui="http://java.sun.com/jsf/facelets"
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:p="http://primefaces.prime.com.tr/ui">
	  
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Usu&aacute;rios</title>
<style> 
.ui-widget, 
.ui-widget .ui-widget { 
font-size: 12px !important; 
} 
</style> 
</h:head>
<h:body>
<ui:include src="menu.xhtml"/>
<br/>
 <h:form>
<p:panel header="Cadastro de Usu&aacute;rios">
<br/>  
 <p:fieldset legend="Dados do Usu&aacute;rio">
 <br/>
   <h:panelGrid columns="4" width="900">
    <h:column>
      <h:outputLabel value="Nome:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="nome" size="40" value="#{usuariosBean.usuario.nome}"/>
    </h:column>    
    <h:column>
      <h:outputLabel value="Login:"/>&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="login" size="20" value="#{usuariosBean.usuario.login}"/>
    </h:column>   
    <h:column>
      <h:outputLabel value="Senha:"/>&nbsp;
    </h:column>
    <h:column>
      <p:password id="password" size="20" value="#{usuariosBean.usuario.senha}"/>
    </h:column>
    <h:column>
      <h:outputLabel value="Status:"/>&nbsp;
    </h:column>
    <h:column> 
        <h:selectOneRadio id="status" value="#{usuariosBean.usuario.status}">  
            <f:selectItem itemLabel="Ativo" itemValue="AT"/>  
            <f:selectItem itemLabel="Inativo" itemValue="IN" />   
        </h:selectOneRadio>
    </h:column>   
    <h:column>
      <h:outputLabel value="E-mail:"/>&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="email" size="40" value="#{usuariosBean.usuario.email}"/>
    </h:column>   
    <h:column>
      <h:outputLabel value="Telefone:"/>&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="fone" size="20" value="#{usuariosBean.usuario.telefone}"/>
    </h:column>    
    <h:column>
      <h:outputLabel value="CPF:"/>&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="cpfcnpj" size="20" value="#{usuariosBean.usuario.cnpjCpf}"/>
    </h:column>    
    <h:column>
      <h:outputLabel value="RG:"/>&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="rg" size="20" value="#{usuariosBean.usuario.rg}"/>
    </h:column>
    </h:panelGrid>
  </p:fieldset>
  <br/>  
  <p:fieldset legend="Endere&ccedil;o">
  <br/>
   <h:panelGrid columns="4" width="900">
    <h:column>
      <h:outputLabel value="Rua:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="rua" size="40" value="#{usuariosBean.usuario.rua}"/>
    </h:column>
    <h:column>
      <h:outputLabel value="Complemento:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="false" id="complemento" size="40" value="#{usuariosBean.usuario.complemento}"/>
    </h:column>
    <h:column>
      <h:outputLabel value="N&uacute;mero:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="false" id="numero" size="20" value="#{usuariosBean.usuario.numero}"/>
    </h:column>
    <h:column>
      <h:outputLabel value="Bairro:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="true" id="bairro" size="40" value="#{usuariosBean.usuario.bairro}"/>
    </h:column>
     <h:column>
      <h:outputLabel value="CEP:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputText required="false" id="cep" size="20"/>
    </h:column>
     <h:column>
    <h:outputLabel value="Observa&ccedil;&atilde;o:" />&nbsp;
    </h:column>
    <h:column>
      <p:inputTextarea id="observacao" rows="5" cols="40" value="#{usuariosBean.usuario.obs}"/>
    </h:column>
    <h:column>
    <h:outputLabel value="Munic&iacute;pio:" />&nbsp;
    </h:column>
    <h:column>
       
      <h:selectOneMenu id="municipio" required="true" value="#{usuariosBean.usuario.municipio.id}">  
            <f:selectItem itemLabel="--Selecione--" itemValue="" />  
            <f:selectItem itemLabel="Anapolis" itemValue="1"/>
            <f:selectItem itemLabel="Goiania" itemValue="2"/>
            <f:selectItem itemLabel="Brasilia" itemValue="3"/>   
        </h:selectOneMenu>
    </h:column>
    <h:column>
      &nbsp;
    </h:column>
    <h:column>
      &nbsp;
    </h:column>
    <h:column>
      &nbsp;
    </h:column> 
    <h:column>
      &nbsp;
    </h:column>
    </h:panelGrid>
     <p:separator />
      &nbsp;&nbsp;<p:commandButton value="Confirma" action="#{usuarioBean.inserir}"/>
  </p:fieldset>
  </p:panel>
</h:form> 
</h:body>
</html>

UsuarioBean:

package classe.controle.Beans;

import java.sql.SQLException;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import classe.modelo.dao.UsuarioDao;
import classe.modelo.vo.Municipio;
import classe.modelo.vo.Usuario;

@ManagedBean(name="usuarioBean")
@RequestScoped

public class UsuariosBean {
	private Usuario usuario = new Usuario();
        private ArrayList<Usuario> lista;
    
	//inserir no bd os dados do formulario cadusuario
	public void inserir() throws SQLException{
	  usuario.setMunicipio(new Municipio());
	  
	  UsuarioDao usrDao = null;
	  Boolean inserir = usrDao.inserir(usuario);
  	  if(inserir != false){
 	    System.out.println("Usuário gravado com sucesso!");
  	  }else{
  		System.out.println("Erro ao inserir Usuário. Tente novamente!");
  	  }
  	   
	}
    
    public ArrayList<Usuario> getLista(){
    	lista = UsuarioDao.listar();
		return lista;
		
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Usuario getUsuario() {
		return usuario;
	}

}

UsuarioDao:

public boolean inserir(Usuario usuario) throws SQLException{
    	try {
    		conexao = Conexao.conectar();
    		conexao.setAutoCommit(false);
    		
    		Integer novocadId = null;
    		StringBuffer sql1 = new StringBuffer();
    		StringBuffer sql2 = new StringBuffer();
    		
    		sql1.append("INSERT INTO cadastro (cad_cnpjcpf, cad_razaosocial, cad_nome,"
                + "cad_inscr_estadual, cad_rg, cad_inscr_mun, cad_rua, cad_complemento,"
                + "cad_numero, cad_bairro, cad_munid, cad_cep, cad_telefone, cad_www,"
                + "cad_email, cad_obs) "
                + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    		PreparedStatement consulta1 = conexao.prepareStatement(sql1.toString());
    		consulta1.setString(1, usuario.getCnpjCpf());
    		consulta1.setString(2, usuario.getRazaoSocial());
    		consulta1.setString(3, usuario.getNome());
    		consulta1.setString(4, usuario.getInscrEstadual());
    		consulta1.setString(5, usuario.getRg());
    		consulta1.setString(6, usuario.getInscrMun());
    		consulta1.setString(7, usuario.getRua());
    		consulta1.setString(8, usuario.getComplemento());
    		consulta1.setString(9, usuario.getNumero());
    		consulta1.setString(10, usuario.getBairro());
    		consulta1.setInt(11, usuario.getMunicipio().getId());
    		consulta1.setString(12, usuario.getCep());
    		consulta1.setString(13, usuario.getTelefone());
    		consulta1.setString(14, usuario.getWww());
    		consulta1.setString(15, usuario.getEmail());
    		consulta1.setString(16, usuario.getObs());
    		consulta1.execute();
    		
    		Statement stmt1 = conexao.createStatement();
    		ResultSet rs1 = stmt1.executeQuery("SELECT MAX(cad_id) AS cadId from cadastro");
    		if(rs1.next()){
    			novocadId = rs1.getInt("cadId");
    		}
    		stmt1.close();
    		
    		sql2.append("INSERT INTO usuario(usu_id, usu_login, usu_senha, usu_sts) VALUES (?,?,?,?)");
    		PreparedStatement consulta2 = conexao.prepareStatement(sql2.toString());
    		consulta2.setInt(1, novocadId);
    		consulta2.setString(2, usuario.getLogin());
            consulta2.setString(3, usuario.getSenha());
            consulta2.setString(4, usuario.getStatus());
    		consulta2.execute();
    		
    		conexao.commit();
    		System.out.println("Transaction commit...");
    		conexao.setAutoCommit(true);
    		return true;
		} catch (Exception e) {
			if(conexao!=null){
			   conexao.rollback();
			   System.out.println("Connection rollback...");
			}
			e.printStackTrace();
			return false;
		}
    }

Quando dou o submit no formulário dá a seguinte mensagem:

javax.el.PropertyNotFoundException: /cadusuario.xhtml @125,100 value="#{usuariosBean.usuario.municipio.id}": Target Unreachable, ‘municipio’ returned null

Classe Municipio:

package classe.modelo.vo;

public class Municipio {
	private int id;
    private String descricao;
    private String codigo;
    private UF uf; // id da uf
    
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public UF getUf() {
		return uf;
	}
	public void setUf(UF uf) {
		this.uf = uf;
	}
    
    
}

Acho que meu método inserir tá errado ou então é o selectOneMenu do form que está errado.

Coloca sua classe Usuario ai pra eu dar uma olhadela…

UsuarioDao usrDao = null;  
      Boolean inserir = usrDao.inserir(usuario);  

‘usrDao’ está nulo.

Classe usuario:

package classe.modelo.vo;

public class Usuario extends Cadastro{
	private int id;
    private String login;
    private String senha;
    private String status;
    
    @Override
	public int getId() {
		return id;
	}
    @Override
	public void setId(int id) {
		this.id = id;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
    
    
}

classe cadastro da qual usuario herda atributos

package classe.modelo.vo;

import java.sql.Date;


public class Cadastro{
	private int id;
    private String cnpjCpf;
    private String razaoSocial;
    private String nome;
    private String inscrEstadual;
    private String rg;
    private String inscrMun;
    private String rua;
    private String complemento;
    private String numero;
    private String bairro;
    private Municipio municipio; // campo municipio id
    private String cep;
    private String telefone;
    private String www;
    private String email;
    private String obs;
    private Date dtCadastro;
    private String sts;
    private Empresa empresa;
    
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getCnpjCpf() {
		return cnpjCpf;
	}
	public void setCnpjCpf(String cnpjCpf) {
		this.cnpjCpf = cnpjCpf;
	}
	public String getRazaoSocial() {
		return razaoSocial;
	}
	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getInscrEstadual() {
		return inscrEstadual;
	}
	public void setInscrEstadual(String inscrEstadual) {
		this.inscrEstadual = inscrEstadual;
	}
	public String getRg() {
		return rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}
	public String getInscrMun() {
		return inscrMun;
	}
	public void setInscrMun(String inscrMun) {
		this.inscrMun = inscrMun;
	}
	public String getRua() {
		return rua;
	}
	public void setRua(String rua) {
		this.rua = rua;
	}
	public String getComplemento() {
		return complemento;
	}
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	public String getNumero() {
		return numero;
	}
	public void setNumero(String numero) {
		this.numero = numero;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public Municipio getMunicipio() {
		return municipio;
	}
	public void setMunicipio(Municipio municipio) {
		this.municipio = municipio;
	}
	public String getCep() {
		return cep;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getWww() {
		return www;
	}
	public void setWww(String www) {
		this.www = www;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public Date getDtCadastro() {
		return dtCadastro;
	}
	public void setDtCadastro(Date dtCadastro) {
		this.dtCadastro = dtCadastro;
	}
	public String getSts() {
		return sts;
	}
	public void setSts(String sts) {
		this.sts = sts;
	}
	public Empresa getEmpresa() {
		return empresa;
	}
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}    
}

Como devo instanciar o usuarioDao então?

fiz assim mas continua o mesmo erro:

public void inserir() throws SQLException{
	  usuario.setMunicipio(new Municipio());
	  
	  UsuarioDao usrDao = new UsuarioDao();
	  Boolean inserir = usrDao.inserir(usuario);
  	  if(inserir != false){
 	    System.out.println("Usuário gravado com sucesso!");
  	  }else{
  		System.out.println("Erro ao inserir Usuário. Tente novamente!");
  	  }
  	   
	}

/cadusuario.xhtml @125,100 value="#{usuariosBean.usuario.municipio.id}": Target Unreachable, ‘municipio’ returned null

Boa tarde ,

newuser debug seu código e verá que ao colocar o municipio ele não está indo, faça uma teste rápido para saber.
mude o campo do municipio onde poderá inserir o valor e vê se vai para o banco, esses dias ocorreu isso comigo, eu estava fazendo um teste de cadastro e tinha informações nas quais eu não estava preenchendo como a data do sistema mas no banco de dados está setado como NOT NULL e a todo momento ele dava essa mensagem, então mudei para NULL apenas para testar.
No construtor do ManagedBean eu fiz diferente, abaixo segue um exemplo de como coloquei.

@ManagedBean(name = "mensagemBean")
@SessionScoped
public class MensagemBean {

    /** Creates a new instance of MensagemMB */
    
    private Mensagem mensagem;
    private ListDataModel mensagens;
    
 
    @EJB
    private MensagemFachada mensagemFachada;
    
    public MensagemBean() {
      mensagem = new Mensagem();
    }

abraços

A questão é porque não está indo.

Quando inicio o apache dá a seguinte mensagem no console.

AVISO: JSF1074: O bean gerenciado denominado ‘municipioBean’ já foi registrado. Substituindo o tipo de classe do bean gerenciado classe.controle.Beans.MunicipioBean por classe.controle.Beans.MunicipioBean.

O que pode ser isso?