Combos Dependentes JSF, Primefaces e Spring - Passagem de Parametros

Bom dia

Sou iniciante em java e estou tentando fazer um combo aninhado de Estados e Cidades pesquisei no fórum e não encontrei algo que pudesse me ajudar, eu consegui popular o selectonmenu dos estados porém não estou conseguindo passar o estado selecionado para o método que seria responsável por retornar as cidades baseadas no estado selecionado (Está passando um valor nullo).
Segue abaixo trechos do meu código:

View

<!-- LISTAR ESTADOS -->
							<p:outputLabel value="Estados" for="estados" />
							<p:selectOneMenu id="estados" filter="true"
								value="#{cidadesBean.estado}"
								requiredMessage="Selecione um estado">
								<f:selectItem noSelectionOption="true" itemValue="" itemLabel="-- Estados --" />
								<f:selectItems value="#{cidadesBean.estados}" var="estado"
									itemValue="#{estado}" itemLabel="#{estado.nome}"/>								
								<p:ajax event="change" process="@this" listener="#{cidadesBean.popular}" update="cidades" />
							</p:selectOneMenu>

							<!-- LISTAR CIDADES -->
							<p:outputLabel for="cidades" value="Cidades"  />
							<p:selectOneMenu id="cidades" filter="true" required="true"
								requiredMessage="Campo Obrigatório"  value="#{cidadesBean.cidade}" >
								<f:selectItem noSelectionOption="true" itemValue="" itemLabel="-- Cidades --" />
								<f:selectItems value="#{cidadesBean.cidades}" var="cidades"
									itemValue="#{cidades}" itemLabel="#{cidades.nome}" />
							</p:selectOneMenu>

Bean

@ManagedBean
@Controller
@Scope("views")
public class CidadesBean implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Autowired
	CadCidadesServiceImpl cadCidades;

	@Autowired
	CadEstadosService cadEstadosService;

	private Cidades cidade;
	private List<Cidades> cidades;
	private List<Estados> estados;
	private Estados estado;

	@PostConstruct
	public void ini() {
		estados = cadEstadosService.getListaEstados();
		cidades = new ArrayList<>();
	}

	public Estados getEstado() {
		return estado;
	}

	public void setEstado(Estados estado) {
		this.estado = estado;
	}

	public Cidades getCidade() {
		return cidade;
	}

	public void setCidade(Cidades cidade) {
		this.cidade = cidade;
	}

	public List<Cidades> getCidades() {
		return cidades;
	}

	public void setCidades(List<Cidades> cidades) {
		this.cidades = cidades;
	}

	public List<Estados> getEstados() {
		return estados;
	}

	public void setEstados(List<Estados> estados) {
		this.estados = estados;
	}

	public void popular() {

		try {
			if (estado != null) {
				cidades = cadCidades.consultaCidades(estado);
			} else {
				cidades = new ArrayList<>();
			}

		} catch (RuntimeException erro) {
			erro.printStackTrace();
		}
	}
}