2

我对acceleo非常陌生,对于文本生成(对于 java 语言),我正在使用ecore文件和.mtl 模块。

在我的应用程序中需要注释,所以我在我的 ecore 模型中声明了注释。但问题是我无法使用 MTL 文件中的注释详细信息(键、值)检查条件。

我在.mtl 文件中的情况是

[if(r.getEAnnotation('sourcename').details.key.equalsIgnoreCase('keyname'))] [/if]

但是这里的条件表达式在 if 块中不接受,甚至在 let 块中也不接受。

我能够打印我的注释源详细信息(键,值)的值,甚至我能够打印条件的真值或闪值。

如果有人知道这个问题的解决方案,请重播我

4

1 回答 1

2

此表达式r.getEAnnotation('sourcename').details返回一个集合,因此“if”的条件是布尔值的集合,而不是布尔值。您可以将其更改为:

[if(r.getEAnnotation('sourcename').details->first().key.equalsIgnoreCase('keyname'))] [/if]

或者

[if(r.getEAnnotation('sourcename').details->collect(key.equalsIgnoreCase('keyname'))->size() > 0)] 

[/if]
于 2011-04-21T13:49:50.750 回答