Что такое идентификатор состояния, который xtext использует при сохранении ресурса

Я размещаю редактор xtext orion, используя iframe в своем угловом приложении. Мне нужно сохранить содержимое, написанное со стороны моего углового приложения, в бэкэнд (приложение Java). Может ли кто-нибудь помочь мне с вызовами API или подходом, который я должен сделать с моей угловой стороны, чтобы я мог сохранить контент, написанный в редакторе.

Что я уже сделал:
1. Я попытался извлечь содержимое из iframe с моей угловой стороны, но извлеченные таким образом данные являются частичными, поскольку они извлекают только данные, которые видны только через iframe сразу, а не весь контент. который нужно прокрутить, чтобы просмотреть .
2 . Я попытался сделать вызовы API «сохранить», которые xtext делает при сохранении, но для этого требуется некоторый stateId в качестве тела запроса. Мне нужно понять, что это за идентификатор состояния и как он оценивается?

Я делаю этот вызов из своего углового приложения

        _this.saveEditor = function(args) {
        var params = {
            requiredStateId: args.stateId
        }
        _this.saveUrl = XTEXT_URL + '/save?resource=' + args.resourceId;
        return $http({
            method: 'POST',
            url: _this.saveUrl,
            data: params
        });
    };

мое тело запроса:

{"requiredStateId":"-80000000"}

И это идентификатор состояния, который я получаю, выполняя предварительный вызов API загрузки, который возвращает идентификатор состояния в своем ответе.


person rohit nagar    schedule 07.07.2017    source источник
comment
Что я уже сделал => можете ли вы добавить код для этого   -  person Rakeschand    schedule 07.07.2017
comment
просто вызов сохранения с клиента на сервер не работает? github.com/eclipse/xtext-web/blob/master/   -  person Christian Dietrich    schedule 07.07.2017
comment
@christianDietrich не работал   -  person rohit nagar    schedule 07.07.2017
comment
Не могли бы вы привести минимальный пример? Вы пытались отладить бэкэнд   -  person Christian Dietrich    schedule 07.07.2017
comment
@christianDietrich, мы намерены использовать тот же API для сохранения, но как его вызвать из клиентского приложения angular?   -  person rohit nagar    schedule 07.07.2017
comment
@christianDietrich и Rakeschand Я обновил вопрос. Пожалуйста, посмотрите   -  person rohit nagar    schedule 07.07.2017
comment
требуемый идентификатор состояния используется, чтобы убедиться, что нет конфликтующих запросов. он равен последнему stateId, который вы получили в ответах сервера.   -  person Christian Dietrich    schedule 07.07.2017


Ответы (1)


может это вырезка может помочь вам, я не знаю, как вы можете связать это со своими вещами, хотя

require(["orion/code_edit/built-codeEdit-amd"], function() {
        require(["xtext/xtext-orion"], function(xtext) {
            var editors = xtext.createEditor({
                baseUrl: baseUrl,
                syntaxDefinition: "xtext-resources/generated/mydsl-syntax"
            }).done(function(editorViewer) {
                $("#save-button").click(function() {
                    editorViewer.xtextServices.saveResource();
                });
                $("#log-button").click(function() {
                    console.log(editorViewer.xtextServices.editorContext.getServerState());
                });
            });

        });
    });

где я делаю простой журнал, который вы можете запросить, а затем вызвать сохранение вручную.

person Christian Dietrich    schedule 07.07.2017