AJAX selectOneMenu - opções aparecem na tela mas no codigo fonte não

estou tentando preencher um <h:selectOneMenu> de forma que ao selecionar um estado, e select de cidade é preenchido, até ai eu consegui, o problema é que qndo seleciono uma cidade, ele não passa o valor para o bean, verifiquei no codigo fonte e percebi que o os nao aparece no codigo, acredito que tenha a ver com isso, pois se no DOM não tem opções como posso passar o parametro selecionado!!. o estranho é que qndo estou testando na tela aparecem as cidades para eu selecionar!!

alguem sabe o que pode ser??? tipo como posso fazer com que o ajax renderize os elementos no DOM???

<h:outputLabel value="#{bundle.CreateClienteLabel_estado}" for="estado" />
                    <h:selectOneMenu id="estado" value="#{clienteController.selected.estado}" title="#{bundle.CreateClienteTitle_estado}" required="true" requiredMessage="#{bundle.CreateClienteRequiredMessage_estado}">
                        <f:selectItems id="estados" value="#{clienteController.estados}"/>
                        <f:ajax event="change" render="cidade" />
                    </h:selectOneMenu>
                    <h:outputLabel value="#{bundle.CreateClienteLabel_cidade}" for="cidade" />
                    <h:selectOneMenu id="cidade" value="#{clienteController.selected.cidade}" title="#{bundle.CreateClienteTitle_cidade}" required="true" requiredMessage="#{bundle.CreateClienteRequiredMessage_cidade}">
                        <f:selectItems value="#{clienteController.itemsSelectOneCidades}"/>
                    </h:selectOneMenu>

Posta ai o código do ManagedBean.

cara eu fiz o seguinte…
coloquei uma nova tag ajax e marquei o atributo render para ele mesmo, deste modo eu consigo usar o valor selecionado no metodo, só que eu clico em visualizar codigo fonte no navegador e aparece o cod abaixo… ele nao deveria mostrar os das cidades???

<label for="j_idt30:cidade">
Cidade:</label></td>
<td><select id="j_idt30:cidade" name="j_idt30:cidade" size="1" title="Cidade" onchange="mojarra.ab(this,event,'change',0,'j_idt30:cidade')">	<option value="">---</option>
</select>
<h:outputLabel value="#{bundle.CreateClienteLabel_cidade}" for="cidade" />
                    <h:selectOneMenu id="cidade" value="#{clienteController.selected.cidade}" title="#{bundle.CreateClienteTitle_cidade}" required="true" requiredMessage="#{bundle.CreateClienteRequiredMessage_cidade}">
                        <f:selectItems value="#{clienteController.itemsSelectOneCidades}"/>
                        <f:ajax event="change" render="cidade" />
                    </h:selectOneMenu>

abaixo o codigo do managedbean

package controler.dominio;

import eao.endereco.EnderecoFacadeLocal;
import jpa.dominio.Cliente;
import controler.util.JsfUtil;
import controler.util.PaginationHelper;
import eao.dominio.ClienteFacade;
import java.util.ArrayList;
import java.util.List;

import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import jpa.endereco.Endereco;

@ManagedBean(name = "clienteController")
@SessionScoped
public class ClienteController {

    @EJB
    private EnderecoFacadeLocal enderecoFacade;
    private Cliente current;
    private DataModel items = null;
    @EJB
    private eao.dominio.ClienteFacade ejbFacade;
    private PaginationHelper pagination;
    private int selectedItemIndex;
    private final String[] siglaEstados = {"", "AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"};
    private final String[] nomeEstados = {"Selecione o Estado", "ACRE", "ALAGOAS", "AMAPÁ?", "AMAZONAS", "BAHIA", "CEARÁ?", "DISTRITO FEDERAL", "ESPÍRITO SANTO", "GOIÁS", "MARANHÃO", "MATO GROSSO", "MATO GROSSO DO SUL", "MINAS GERAIS", "PARÁ", "PARAÍBA", "PARANÁ", "PERNANBUCO", "PIAUÍ", "RIO DE JANEIRO", "RIO GRANDE DO NORTE", "RIO GRANDE DO SUL", "RONDÔNIA", "RORAIMA", "SANTA CATARINA", "SÃO PAULO", "SERGIPE", "TOCANTINS"};
    private List<SelectItem> estados;
    private String selecaoTipoCliente = "PF";
    private Boolean tipoFormularioPF = true;
    private Boolean tipoFormularioPJ = false;

    public ClienteController() {
    }

    public Cliente getSelected() {
        if (current == null) {
            current = new Cliente();
            selectedItemIndex = -1;
            criarSelectListEstados();
            current.setPais("Brasil");
        }
        return current;
    }

    private ClienteFacade getFacade() {
        return ejbFacade;
    }

    public SelectItem[] getItemsSelectOneCidades() {
        return JsfUtil.getSelectItems(enderecoFacade.findAllCidadeByEstado(getSelected().getEstado()), true);
    }

    public void preencheEndereco(AjaxBehaviorEvent event) {
        try {
            Endereco endereco = enderecoFacade.findByEstadoCidadeCep(getSelected().getEstado(), getSelected().getCidade(), getSelected().getCep());
            if (endereco != null) {
                getSelected().setTipoLogradouro(endereco.getTpLogradouro());
                getSelected().setNomeLogradouro(endereco.getLogradouro());
                getSelected().setBairro(endereco.getBairro());
            }
        } catch (Exception e) {

        }
    }

    public String getSelecaoTipoCliente() {
        return selecaoTipoCliente;
    }

    public void setSelecaoTipoCliente(String selecaoTipoCliente) {
        this.selecaoTipoCliente = selecaoTipoCliente;
        if (getSelecaoTipoCliente().equals("PF")) {
            setTipoFormularioPF(true);
            setTipoFormularioPJ(false);
        } else {
            setTipoFormularioPJ(true);
            setTipoFormularioPF(false);
        }
    }

    public Boolean getTipoFormularioPF() {
        return tipoFormularioPF;
    }

    public void setTipoFormularioPF(Boolean tipoFormularioPF) {
        this.tipoFormularioPF = tipoFormularioPF;
    }

    public Boolean getTipoFormularioPJ() {
        return tipoFormularioPJ;
    }

    public void setTipoFormularioPJ(Boolean tipoFormularioPJ) {
        this.tipoFormularioPJ = tipoFormularioPJ;
    }

    public void criarSelectListEstados() {
        estados = new ArrayList<SelectItem>();
        for (int i = 0; i < siglaEstados.length; i++) {
            SelectItem item = new SelectItem(siglaEstados[i], nomeEstados[i]);
            estados.add(item);
        }
    }

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

O navegador ñ vai mostrar um html q ñ existe. Provavelmente aquele “—” q aparece é algum recurso do navegador de dobra de código.
Ñ me parece q vc se lembrou de colocar um converter p/ o SelectOneMenu de estados. Já verificou se o seu problema ñ é esse?