Moqui - 发布 retaining/passing URL 参数

Moqui - Issue retaining/passing the URL parameter

我在 Github(问题#18)上提到了类似的问题,但对我没有任何帮助。

我正在尝试使用以下 transition/service:

<transition name="storeContactInfo">
    <service-call name="mantle.party.ContactServices.store#PartyContactInfo" in-map="context" out-map="context" />
    <default-response url="." />
</transition>

屏幕的 url 参数是 workEffortId,但一旦转换为 运行,它就会从 url 中删除。

我也试过了,没用:

<transition name="storeContactInfo">
    <path-parameter name="workEffortId"/>
    <service-call name="mantle.party.ContactServices.store#PartyContactInfo" in-map="context" out-map="context" />
<default-response url="." >
    <parameter name="workEffortId" from="workEffortId" />
</default-response>
</transition>

我还尝试添加操作标签,我看到它解决了之前的问题。但这也没有用。

我的其他屏幕转换效果很好。还是有问题,还是我哪里做错了?

我正在使用 1.5.1。


更新:我认为问题出在我正在做的事情上,而不是上一期#18。

仔细查看传递的地图和值,似乎有一些重要的复杂性需要理解 - 从 get#PartyContactInfo 发展到 StupidUtilities.flattenNestedMap(创建一个单一的地图,其中包含传入的地图中的字段和所有嵌套的地图并从地图中删除具有空值的条目)到我的转换中调用的 store#PartyContactInfo,它利用传递的许多条件来驱动 PartyForms.xml#ContactInfo.

我试图从第一次服务调用开始就传递值:

<set field="partyId" from="facility.ownerPartyId" />
<service-call name="mantle.party.ContactServices.get#PartyContactInfo" out-map="projectSiteContactInfo" in-map="[partyId:partyId, workEffortId:workEffortId, postalContactMechPurposeId:'PostalShippingDest', telecomContactMechPurposeId:'PhoneShippingDest', emailContactMechPurposeId:'EmailShippingDest']" />

...一直通过,但由于某种原因它没有从另一边出来。

解决方案是在 /mantle-usl/template/party/PartyForms.xml#ContactInfo 小部件组件中添加一个 workEffortId 字段(隐藏),该组件在转换前在容器对话中被调用。

我添加后可以看到:

<parameter name="workEffortId" value="${workEffortId}" />

对于过渡,workEffort 确实为空,因此必须在某处被剥离。

将 workEffortId 添加到 ContactInfo 表单解决了该问题。