¿Cómo cargar el segundo selectOneMenu al cambiar el primer selectOneMenu? [duplicar

Esta pregunta ya tiene una respuesta aquí:

Cómo cargar y mostrar h dependiente: seleccione OneMenu al cambiar una h: seleccione OneMenu 1 respuesta

Tengo 2<h:selectOneMenu> componentes y uno de ellos depende de la selección del otro. Cuando selecciona un valor del primer componente del menú, el segundo cambia con el evento deonchange="submit()" yvalueChangeListener="#{Usuario.cmbDatos_action}" del primer menú:

<h:selectOneMenu id="cmbCombo" binding="#{Usuario.cmbDatos}" value="#{Usuario.id}" 
    onchange="submit()" valueChangeListener="#{Usuario.cmbDatos_action}">
    <f:selectItems value="#{beanCombos.datos}"></f:selectItems>
</h:selectOneMenu>

Es como los países y ciudades del país seleccionado. El primer menú se carga de la siguiente manera:

@ManagedBean
@RequestScoped
public class BeanCombos {

    private List<SelectItem> Datos;

    public BeanCombos() {
        try {
            clsConexion objConexion = new clsConexion();
            String strSQL = "SELECT * FROM Usuarios";            
            objConexion.ResultSetSQL = objConexion.EjecutarConsulta(strSQL);
            Datos = new ArrayList<SelectItem>();

            while (objConexion.ResultSetSQL.next()) {
                Usuario objUsuario = new Usuario();                
                objUsuario.setId(String.valueOf(objConexion.ResultSetSQL.getInt("Codigo")));
                objUsuario.setNombre(objConexion.ResultSetSQL.getString("Nombres").toUpperCase());
                Datos.add(new SelectItem(objUsuario.getId(), objUsuario.getNombre()));
            }
        } catch(Exception ex) {
            String strError = ex.getMessage().toString();            
        }
    }

    public List<SelectItem> getDatos() {
        return Datos;
    }
}

Pero cuando selecciono un valor del primer menú, no sé cómo cargar el siguiente menú. Lo he intentado de la siguiente manera:

public String cmbDatos_action() {
    try {
        int intValor = Integer.parseInt(cmbDatos.getValue().toString());
    } catch(Exception ex) {

    }

    return null;
}

En qué parte del métodocmbDatos_action() ¿Puedo poner el código para cargar el segundo menú?

Respuestas a la pregunta(2)

Su respuesta a la pregunta