在条件中展开表达式?

时间:2016-12-14 11:54:44

标签: moqui

我正在尝试在状态小部件中使用StatusFlowTransition实体的'conditionExpression'字段。

但我认为你不能在Moqui的条件下扩展说$ {statusTransition.conditionExpression}?

如何使用conditionExpression字段?

e.g。

<widgets>
   <link url="${statusChangeTransition ?: 'updateStatus'}"  text="StatusTransitionNameTemplate" text-map="statusTransition" parameter-map="[statusId:statusTransition.toStatusId]" condition="${statusTransition.conditionExpression}" />
</widgets>

1 个答案:

答案 0 :(得分:1)

您问题的关键部分是:如何评估变量中的Groovy表达式?您可以使用Groovy API直接执行此操作,但最简单和最有效(因为已编译的表达式被缓存)这样做的方法是使用ResourceFacade.condition()方法,即:

<link ... condition="ec.resource.condition(statusTransition.conditionExpression, '')"/>

第二个参数是调试位置,可以为空。使用conditionExpression时,保持条件简单并仅使用始终可用的上下文字段非常重要。您还可以将第三个参数传递给condition()方法,该方法是一个Map,其中包含要在conditionExpression中使用的字段以及当前上下文中的字段。