在secound和弦调用中使用第一个和谐调用的结果对象作为arg

时间:2014-05-14 15:12:20

标签: java concordion

我想使用变量person.id来进行其他调用。但似乎协调不支持这个("无效的表达式")。我是否有义务在人和工作中使用豆子并打电话给getLoginAndJob?

<span c:execute="#person = login(#login,#password)"></span>
<span c:execute="#job = getJob(#person.id)"></span>

2 个答案:

答案 0 :(得分:2)

为了保持规格简单易维护,Concordion故意限制仪表规范时允许的表达格式。

在这种情况下,我建议更改fixture类中的getJob()方法以获取person对象。

但是,如果您确实要删除限制,可以将注释@FullOGNL应用于fixture类,然后Concordion将接受OGNL库允许的任何表达式,包括此表达式。

由于此问题经常出现,我已将其添加到Concordion FAQ

答案 1 :(得分:0)

另一种方法是将所需的值分配给变量。所以你的代码将成为:

<span c:execute="#person = login(#login,#password)"></span>
<span c:set="#personId = getId(#person)"></span>
<span c:execute="#job = getJob(#personId)"></span>

如果您的Person类还没有针对其id字段的getter方法,则必须添加它。