Adicionando comportamento Ajax a selectOneMenu

Ola pessoal, tenho uma aplicação com JSF 2 e Richfaces 4,

tenho um selectOneMenu que contem uma lista de paises e ao selecionar um dos países ele carrega uma lista de estados baseada no país escolhido, porém como isso é feito usando um valueChangeListener="#{gravaCidade.mudaListaCidade}" a pagina volta ao topo novamente, tirando o foco do usúario, gostaria de saber se é possivel adicionar um comportamento ajax a isso ou passar o foco para a lista através de javascript(o q eu não gostaria de fazer, pois nessa caso o controle da minha aplicação ficaria na view, mas caso não tivesse outro jeito, eu aceitaria fazer assim ate descobrir um jeito melhor)

parte do codigo da pagina xhtml

<tr>
                        <td>País:*</td>
                        <td><h:selectOneMenu immediate="true" valueChangeListener="#{gravaCidade.mudaListaEstado}" onchange="submit()" id="cidPais" value="#{gravaParentesco.par_pai_id}">                            
                        <f:selectItem itemLabel="" itemValue="" />
                        <f:selectItems value="#{gravaCidade.paises}" var="u" itemLabel="#{u.pai_nom}" itemValue="#{u.pai_id}" />
                    </h:selectOneMenu>
                    </td>
                    </tr>
                    <tr>
                        <td>Estado:*</td>
                        <td>
                    <h:selectOneMenu immediate="true" valueChangeListener="#{gravaCidade.mudaListaCidade}" onchange="submit()" id="somEstado" value="#{gravaParentesco.par_est_id}" >
                        <f:selectItem itemLabel="" itemValue="" />
                        <f:selectItems  value="#{gravaCidade.estadosMany}" var="u" itemLabel="#{u.est_nom}" itemValue="#{u.est_id}" />
                    </h:selectOneMenu>
                    </td>                        
                    </tr>
                    <tr>
                        <td colspan="2"><h:message  styleClass="mensagemErro" for="somEstado" /></td>
                    </tr>

Codigo do manaegdBean

public void mudaListaEstado(ValueChangeEvent event) {

        Session sessao = CriadorDeSessaoNovo.getSession();

        String idString = event.getNewValue().toString();
        //System.out.println("String: " + event.getNewValue().toString());

        Criteria listagem_query = sessao.createCriteria(Estado.class).
                createAlias("pais", "es").
                addOrder(Order.asc("est_nom")).
                addOrder(Order.asc("es.pai_nom")).
                add(Restrictions.eq("es.pai_id", new Integer(idString)));
        setEstadosMany(listagem_query.list());

        FacesContext.getCurrentInstance().renderResponse();

        sessao.close();

    }

[quote=fabiobh]Ola pessoal, tenho uma aplicação com JSF 2 e Richfaces 4,

tenho um selectOneMenu que contem uma lista de paises e ao selecionar um dos países ele carrega uma lista de estados baseada no país escolhido, porém como isso é feito usando um valueChangeListener="#{gravaCidade.mudaListaCidade}" a pagina volta ao topo novamente, tirando o foco do usúario, gostaria de saber se é possivel adicionar um comportamento ajax a isso ou passar o foco para a lista através de javascript(o q eu não gostaria de fazer, pois nessa caso o controle da minha aplicação ficaria na view, mas caso não tivesse outro jeito, eu aceitaria fazer assim ate descobrir um jeito melhor)

parte do codigo da pagina xhtml

<tr>
                        <td>País:*</td>
                        <td><h:selectOneMenu immediate="true" valueChangeListener="#{gravaCidade.mudaListaEstado}" onchange="submit()" id="cidPais" value="#{gravaParentesco.par_pai_id}">                            
                        <f:selectItem itemLabel="" itemValue="" />
                        <f:selectItems value="#{gravaCidade.paises}" var="u" itemLabel="#{u.pai_nom}" itemValue="#{u.pai_id}" />
                    </h:selectOneMenu>
                    </td>
                    </tr>
                    <tr>
                        <td>Estado:*</td>
                        <td>
                    <h:selectOneMenu immediate="true" valueChangeListener="#{gravaCidade.mudaListaCidade}" onchange="submit()" id="somEstado" value="#{gravaParentesco.par_est_id}" >
                        <f:selectItem itemLabel="" itemValue="" />
                        <f:selectItems  value="#{gravaCidade.estadosMany}" var="u" itemLabel="#{u.est_nom}" itemValue="#{u.est_id}" />
                    </h:selectOneMenu>
                    </td>                        
                    </tr>
                    <tr>
                        <td colspan="2"><h:message  styleClass="mensagemErro" for="somEstado" /></td>
                    </tr>

Codigo do manaegdBean

[code]
public void mudaListaEstado(ValueChangeEvent event) {

    Session sessao = CriadorDeSessaoNovo.getSession();

    String idString = event.getNewValue().toString();
    //System.out.println("String: " + event.getNewValue().toString());

    Criteria listagem_query = sessao.createCriteria(Estado.class).
            createAlias("pais", "es").
            addOrder(Order.asc("est_nom")).
            addOrder(Order.asc("es.pai_nom")).
            add(Restrictions.eq("es.pai_id", new Integer(idString)));
    setEstadosMany(listagem_query.list());

    FacesContext.getCurrentInstance().renderResponse();

    sessao.close();

}

[/code][/quote]

Você pode usar a tag a4j:support

<f:selectItem itemLabel="" itemValue="" /> <f:selectItems value="#{gravaCidade.paises}" var="u" itemLabel="#{u.pai_nom}" itemValue="#{u.pai_id}" /> <a4j:support event="onchange" reRender="aqui vc pasa o id da sua outra combo"> </h:selectOneMenu>

A tag a4j:support só existe no Richfaces 3, eu uso o Richfaces 4, tem alguma outra alternativa?

cara,
tem a tag f:ajax
segue um exemplo, http://mkblog.exadel.com/2010/04/learning-jsf-2-ajax-in-jsf-using-fajax-tag/

t+