JSF - selectOneMenu - Carregar a tela com um item selecionado

Bom dia pessoal. Estou a 2 dias com um problema de front-end e as soluções que encontrei internet a fora não resolveu meu problema. Este é o motivo da existência do tópico.

Seguinte, tenho uma dateTable que lista minhas propriedades, no final de cada linha tenho o botão para alterar. Quando clico no botão é exibida uma página com um formulário para alteração, este formulario ja vem com os campos preenchidos com execeção de um campo, o drop-down (selectOneMenu) que mostra a cidade onde a propriedade está situada. Existe outro drop-down que mostra o estado, e este vem preenchido corretamente… usei a mesma lógica para o drop-down da cidade mas não obtive sucesso.

Alguém pode dar uma luz ?? vou colocar os codes aqui.

Pagina de Alteração(alterar.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">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:c="http://java.sun.com/jsp/jstl/core"
                xmlns:p="http://primefaces.org/ui" template="../main.xhtml">

<ui:define name="content">
     <h:form>           
        <!--Alteração de propriedade -->            
        <p:panelGrid columns="2" columnClasses="ui-grid-col-0, ui-grid-col-1" layout="grid" styleClass="ui-panelgrid-blank">
            
            <p:outputLabel value="Estado: " />
            <p:selectOneMenu id="estado" value="#{propriedadeController.estado}" style="width: 200px;" converter="estadoConverter"
                             required="true" requiredMessage="Preenchimento do estado e da cidade obrigatórios">
                <f:selectItem itemLabel="Selecione" />
                <f:selectItems value="#{propriedadeController.estados}" var="e" itemValue="#{e}" itemLabel="#{e.sigla}" />
                <p:ajax update="cidade" event="change" listener="#{propriedadeController.getCidadeList}"/>
            </p:selectOneMenu>

            <p:outputLabel value="Cidade: " />
            <p:selectOneMenu id="cidade" style="width: 200px;" value="#{propriedadeController.cidade}" converter="cidadeConverter">
                <f:selectItem itemLabel="Selecione" />
                <f:selectItems value="#{propriedadeController.cidades}" var="c" itemValue="#{c}" itemLabel="#{c.nome}" />
            </p:selectOneMenu>    

            <p:outputLabel value=""/>
            <p:outputLabel value="Dados de cobrança: "/>
            <p:outputLabel value=""/>
            <p:outputLabel value="Estado: " />
            <p:selectOneMenu id="estadoCobranca" style="width: 200px;" value="#{propriedadeController.estadoCobranca}" converter="estadoConverter">
                <f:selectItem itemLabel="Selecione" />
                <f:selectItems value="#{propriedadeController.estados}" var="e" itemValue="#{e}" itemLabel="#{e.sigla}" />
                <p:ajax update="cidadeCobranca" event="change" listener="#{propriedadeController.getCidadeCobrancaList}"/>
            </p:selectOneMenu>

            <p:outputLabel value="Cidade: " />
            <p:selectOneMenu id="cidadeCobranca" style="width: 200px" value="#{propriedadeController.cidadeCobranca}" converter="cidadeConverter">
                <f:selectItem itemLabel="Selecione" />
                <f:selectItems value="#{propriedadeController.cidadesCobranca}" var="c" itemValue="#{c}" itemLabel="#{c.nome}" />
            </p:selectOneMenu>

            <p:outputLabel value="Logadouro "/>
            <p:inputText value="#{propriedadeController.propriedade.endCobranca}" maxlength="75"/>
            <p:outputLabel value="Numero: "/>
            <p:inputText value="#{propriedadeController.propriedade.endCobrancaNumero}" maxlength="6" />
            <p:outputLabel value="Bairro: "/>
            <p:inputText value="#{propriedadeController.propriedade.endCobrancaBairro}" maxlength="45"/>
            <p:outputLabel value="Cep: "/>
            <p:inputMask mask="99999-999" value="#{propriedadeController.propriedade.cepCobranca}"/> 

            <p:outputLabel value=""/>
            <p:outputLabel value=""/>

            <h:commandButton value="Salvar Alteração" action="#{propriedadeController.atualizarPropriedade()}"/>
        </p:panelGrid>
    </h:form>

</ui:define>

</ui:composition>

Aqui vem meu ManagedBean:

@ManagedBean
@SessionScoped
public class PropriedadeController implements Serializable {

private final iFunctions apiMatta;
private Propriedade propriedade = new Propriedade();
private final PropriedadeDao propriedadeDao;

private List<Estado> estados;
private List<Cidade> cidades;
private List<Cidade> cidadesCobranca;

private Estado estado;
private Estado estadoCobranca;
private Cidade cidade;
private Cidade cidadeCobranca;

private TipoPessoa tipoPessoa;
private List<TipoPessoa> tipoPessoas;

public PropriedadeController() {
    apiMatta = new ApiMatta();
    propriedadeDao = new PropriedadeDao();

}

@PostConstruct
public void init() {
    estados = apiMatta.getEstado();
    tipoPessoas = apiMatta.getTipoPessoas();
}

public void getCidadeList(AjaxBehaviorEvent ajaxBehaviorEvent) {
    cidades = apiMatta.getCidade(estado);
}

public void getCidadeCobrancaList(AjaxBehaviorEvent ajaxBehaviorEvent) {
    cidadesCobranca = apiMatta.getCidade(estadoCobranca);
}

public void onRowSelect(SelectEvent event) {
    propriedade = (Propriedade) event.getObject();
}

public String salvar() {
    try {
        propriedade.setCidade(cidade);
        propriedade.setCidadeCobranca(cidadeCobranca);
        propriedade.setTipoPessoa(tipoPessoa);
        if (propriedadeDao.inserir(propriedade)) {
            limparCampos();
            ApiMatta.addMessageSuccessful("Aviso", "Propriedade cadastrada com sucesso");
            return "index.xhtml";
        } else {
            return "";
        }
    } catch (Exception e) {
        System.out.println("ERROR SALVAR:   " + e.getMessage());
        return "";
    }

}

public List<Propriedade> listar() {
    try {
        limparCampos();
        return propriedadeDao.read();
    } catch (Exception e) {
        return null;
    }
}

public String deletar(Propriedade propriedade) {
    try {
        if (propriedadeDao.remover(propriedade)) {
            limparCampos();
            return "index.xhtml";
        } else {
            return null;
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
        return null;
    }

}

public String editarPropriedade(Propriedade propriedade) {
    this.propriedade = propriedade;

    this.estado = propriedade.getCidade().getEstado();
    this.estadoCobranca = propriedade.getCidadeCobranca().getEstado();

    this.cidade = propriedade.getCidade();
    this.cidadeCobranca = propriedade.getCidadeCobranca();

    this.tipoPessoa = propriedade.getTipoPessoa();

    return "alterar.xhtml";
}

public String atualizarPropriedade() {
    try {
        propriedadeDao.alterar(propriedade);
        //propriedades = listar();
        limparCampos();
        ApiMatta.addMessageSuccessful("Aviso", "Atualizado com sucesso Control");
        return "index.xhtml";
    } catch (Exception e) {
        System.out.println(e.getMessage());
        return "";
    }
}/*metodo limparCampos(), getters&setters omitidos*/

os SelectOneMenu de Estado e TipoPessoa estão ok. O problema é no caso da Cidade.

Pesquise sobre Enuns do java, é uma solução bem mais elegante.