在转换中调用服务的基本过程是什么?

时间:2015-02-11 04:37:32

标签: moqui

我想知道在转换中直接调用服务之间的区别,如

<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>

两种情况下如何处理Web参数?

当我在JSON中发送数组映射时,使用AngularJS作为输入参数,对于这两种情况,它们的解析方式都不同。

当服务调用在actions标记内部或外部时,对于这两种情况,对参数进行了不同的解析。

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]

列表中的元素将包含操作标记之外的服务的额外空间。

它应该以这种方式工作吗?

1 个答案:

答案 0 :(得分:1)

在这两种情况下,您都明确指定要与service-call。@ in-map属性一起使用的in-parameters,因此在此示例中它们都是相同的。当service-call元素直接位于transition元素下(不在actions元素内)且没有指定@ in-map时,它默认为当前上下文,而@ out-map则相同。当service-call在actions元素中时,没有默认值,即如果你想使用上下文或其他一些in-or---map,你必须明确指定它们。

有关屏幕,屏幕转换以及与使用Moqui制作应用程序(可从moqui.org网站下载)中的转换相关联时的表格的更多详细信息。