Combo com selectOneMenu

Olá pessoal, estou de volta com um simples problema na aplicação que desenvolvo… Sei que o assunto é bastante abordado na internet com vários exemplos porém
li e reli vários tutoriais e não consegui resolver meu problema.
Preciso fazer um combo de select onde recupero os dados das empresas cadastradas no bd e listo no primeiro select, ao selecionar a empresa listo
os cargos referente a mesma no segundo select…

Consigo listar as empresas com facilidade, porém ao selecionar uma das empresas listadas não me é apresentado a lista correspondente de cargo
no segundo select.
Segue os códigos.

index.xhtml

<?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:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Cadastro</title>
    </h:head>
    <h:body>        
        
      <h:panelGrid id="grid" columns="1">
          <h:outputLabel for="empresa" value="Empresa" />  
            <h:selectOneMenu id="empresa"  value="#{empresaBean.empresa.nome}" 
                             valueChangeListener="#{cargoBean.listCargoCombo(evento)}"
                             validatorMessage="Campo obrigatório" required="true" style="width:200px">  
                <f:selectItem itemLabel="Selecione uma empresa" itemValue="Nenhum" />  
                <f:selectItems value="#{empresaBean.listaEmpresa}" var="v"  
                               itemValue="#{v.idEmpresa}" itemLabel="#{v.nome}"/>  
                <f:ajax event="change" render="cargo" />  
            </h:selectOneMenu>  
            <p:message for="empresa" />  

            <h:outputLabel for="cargo" value="Cargo" />  
            <h:selectOneMenu id="cargo"  value="#{cargoBean.cargo.nomeCargo}" 
                             validatorMessage="Campo obrigatório" required="true" style="width:200px">  
                <f:selectItem itemLabel="Selecione um cargo" itemValue="Nenhum" />  
                <f:selectItems value="#{cargoBean.listaCargosCombo}" var="c"  
                               itemValue="#{c.idCargo}" itemLabel="#{c.nomeCargo}"/>
            </h:selectOneMenu>  
            <p:message for="cargo" />
        </h:panelGrid>
        
        <br></br>
        <br></br>
    </h:body>
</html>

EmpresaBean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import FactoryMethod.FactoryDAO;
import Interface.IEmpresaDAO;
import Model.Empresa;
import java.awt.event.ActionEvent;
import java.io.Serializable;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author VIRTUALWEB
 */
@ManagedBean
@SessionScoped
public class EmpresaBean implements Serializable{

    private IEmpresaDAO dao = (IEmpresaDAO) FactoryDAO.creatObject(Empresa.class);
    private Empresa empresa = new Empresa();
    private List<Empresa> listaEmpresa = null;
    
    /*@PostConstruct
    public void init() throws ParseException, SQLException {
        listaEmpresa = this.dao.listarNomeEmpresa(); 
    }*/
    
    
    // Getters e Setters
    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }

    public List<Empresa> getListaEmpresa() throws ParseException, SQLException { 
        return listaEmpresa;
    }

    public void setListaEmpresa(List<Empresa> listaEmpresa) {
        this.listaEmpresa = listaEmpresa;
    }
    
    // Métodos    
    
    public void listarNomeEmpresas(ActionEvent e) throws ParseException, SQLException{
                   
        listaEmpresa= dao.listarNomeEmpresa();
    }
}

CargoBean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import FactoryMethod.FactoryDAO;
import Interface.ICargoDAO;
import Model.Cargo;
import java.awt.event.ActionEvent;
import java.io.Serializable;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.ValueChangeEvent;

/**
 *
 * @author VIRTUALWEB
 */
@ManagedBean
@SessionScoped
public class CargoBean implements Serializable{

    // Contrutora da Classe
    public CargoBean() {
    }
    
    private ICargoDAO dao = (ICargoDAO) FactoryDAO.creatObject(Cargo.class);
    private Cargo cargo = new Cargo();
    private List<Cargo> listaCargo = null;
    private List<Cargo> listaCargosCombo = null;

    // Getters e Setters
    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public List<Cargo> getListaCargoCombo() {
        return listaCargosCombo;
    }

    public void setListaCargoCombo(List<Cargo> listaCargoCombo) {
        this.listaCargosCombo = listaCargoCombo;
    }

    public List<Cargo> getListaCargo() throws ParseException, SQLException { 
        return listaCargo;
    }

    public void setListaCargo(List<Cargo> listaCargo) {
        this.listaCargo = listaCargo;
    }
    
    // Métodos    
    public void listCargoCombo(ValueChangeEvent evento) {   
        
        listaCargosCombo = new ArrayList(); 
        listaCargosCombo = dao.Listar();
        String idMarca     = evento.getNewValue().toString();  
    }  
}

Bom esses aí são partes dos códigos… Ao rodar a pagina index.xhtml aparece a lista das empresas e não os cargos…
Tentei debugar o sistema e percebi que ao selecionar a empresa o método listCargoCombo não é chamado…
Podem me ajudar?

Alguem pra me ajudar?