0
<transition name="abc">
<actions>
<if condition="update != null">
<service-call name="update#someEntity"/>
</if>
</actions>
<default-response url="."/>
</transition>

上面的代码不起作用。即,如果我放置日志语句,它会进入 if 块,但数据库实体中不会发生更新。还验证了所有参数/值/p.keys 等都使用来自 FORM 的正确值正确传递,该值在提交时调用此转换。

注意到的另一件事是,当如下更改时它可以完美运行(即在转换内只有一个服务调用元素,并且没有对屏幕/其他地方的任何其他代码进行任何更改):

<transition name="abc">
<service-call name="update#someEntity"/>
<default-response url="."/>
</transition>

请问这方面有什么指导吗?

4

1 回答 1

1

使用 Moqui 制作应用程序解释了直接在转换元素下使用服务调用而不是内部操作时的差异。

使用直接在转换元素下的服务调用,它假定您想要使用“上下文”作为内图和外图,除非您指定不同的内容。

通常(即在操作中)服务调用元素不会假设这一点,不指定您想要传递给服务的内容(在地图中)是没有意义的,并且添加服务输出会非常混乱默认情况下到上下文。

要修复您的第一个代码示例,您需要添加 in-map,如果需要,还需要添加 out-map 属性,即:

<service-call name="update#someEntity" in-map="context" out-map="context"/>

那应该解决它。

于 2015-06-12T23:35:38.840 回答