2016-12-14 68 views
0

我正尝试在状态小部件中使用StatusFlowTransition实体的'conditionExpression'字段。在条件中展开表达式?

但我认为你不能扩大Moqui一个条件中说,$ {} statusTransition.conditionExpression?

如何应该在conditionExpression场被继续使用?

例如

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

回答

1

你的问题的关键部分是:我该如何评价一个Groovy表达式,它是一个变量?为此,您可以直接与Groovy的API,但最简单和最有效的(因为编译表达式缓存)的方式来做到这一点是使用ResourceFacade.condition()方法,即:

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

第二个参数是调试位置并可以为空。使用conditionExpression时,保持条件简单并且只使用始终可用的上下文字段很重要。除了当前上下文中的内容外,还可以将第三个参数传递给condition()方法,该方法是一个带有条件表达式的字段的映射。

+0

太好了,谢谢。 Wrt上下文字段总是可用的,我想使用userGroupId,其中afaik并不总是可用,比如说ec.user.userId可用。为了解决这个问题,我打算添加一些EECA来创建/删除相应的UserPreference项,并创建/删除UserGroupMember记录。显然笨拙,但有没有更好的方法来做到这一点? –

+0

对不起,只是澄清/纠正 - 而在我自己的使用情况下,我现在只限制每个用户只有一个组的用户组成员资格,那么一般情况下正确的是该用户的组成员资格列表,在条件表达式中检查。 –

+0

查看UserFacade界面(对于ec.user),有关于用户组,首选项等的数据的方法。 –