Какова основная процедура вызова службы при переходе?

Я хотел бы знать разницу между вызовом службы при переходе напрямую, например

<transition name="createExample">
    <service-call name="org.moqui.example.ExampleServices.createExample" in-map="ec.web.parameters"
                  web-send-json-response="true"/>
    <default-response type="none"/>
</transition>

и вызов службы внутри тега действий, например

<transition name="createExample">
    <actions>
        <service-call name="org.moqui.example.ExampleServices.createExample" in-map="ec.web.parameters"
                  web-send-json-response="true"/>
    <actions>
    <default-response type="none"/>
</transition>

Как обрабатываются веб-параметры в обоих случаях?

Когда я отправляю карту массивов в JSON, используя AngularJS в качестве входных параметров, они анализируются по-разному для обоих случаев.

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

Parameters in JSON 
var parameters = { exampleId : ["example1","example2","example3"]};

ec.web.parameters for service-call in actions tag
exampleId : [example1, example2, example3]

ec.web.parameters for service-call outside actions tag
exampleId : [example1,  example2,  example3]

Элементы в списке будут содержать дополнительный пробел для службы за пределами тегов действий.

Так это должно работать таким образом?


person adityazoso    schedule 11.02.2015    source источник
comment
Не должно быть различий в том, как анализируются параметры, на стороне сервера они проходят один и тот же путь кода. Фактически, groovy-скрипт для действий, сгенерированных в обоих случаях, практически идентичен. Я никогда не наблюдал ничего подобного в подобных вещах. Чтобы увидеть, что происходит, мне понадобится достаточно вашего кода и тому подобного, чтобы воспроизвести его. Для отладки я бы рекомендовал смотреть на тип объекта и печатать значения списка по отдельности, чтобы увидеть, действительно ли есть пробелы или что-то еще происходит.   -  person David E. Jones    schedule 22.02.2015
comment
Сначала я попытаюсь отладить его, а затем вернусь к вам, если у меня возникнут проблемы с полным кодом, который я использую.   -  person adityazoso    schedule 23.02.2015


Ответы (1)


В обоих случаях вы явно указываете внутренние параметры для использования с атрибутом service-call.@in-map, поэтому в этом примере они оба одинаковы. Когда элемент вызова службы находится непосредственно под элементом перехода (не внутри элемента действий) и @in-map не указан, по умолчанию используется текущий контекст, и то же самое для @out-map. Когда сервисный вызов находится внутри элемента действий, для них нет значений по умолчанию, т. е. если вы хотите использовать контекст или какую-либо другую внутреннюю или внешнюю карту, вы должны указать их явно.

Эти и многие другие сведения об экранах, переходах между экранами и о том, что делают формы, связанные с переходом, можно найти в книге Making Apps with Moqui (которую можно загрузить с веб-сайта moqui.org).

person David E. Jones    schedule 12.02.2015
comment
Ok. Но я столкнулся с проблемой, когда отправлял параметры с помощью AngularJS. Когда мой служебный вызов находился внутри тега действий при переходе, параметры анализировались по-разному, а когда служебный вызов находился вне действий, они анализировались по-разному. - person adityazoso; 12.02.2015
comment
Я отредактировал вопрос, чтобы предоставить вам более подробную информацию о проблеме, с которой я сталкиваюсь в настоящее время. - person adityazoso; 12.02.2015