Java 在acceleo中使用注释时出现问题
我对acceleo非常陌生,对于文本生成(java语言),我正在使用ecore文件和.mtl模块。 在我的应用程序中需要注释,因此我在ecore模型中声明了注释。但问题是,我无法检查MTL文件中的注释详细信息(键、值)是否符合条件 .mtl文件中的我的情况是 [if(r.getEAnnotation('sourcename').details.key.equalsIgnoreCase('keyname'))] [if] 但这里的条件表达式在if块中是不可接受的,甚至在let块中也是不可接受的 我可以打印注释源详细信息(键、值)的值,甚至可以打印条件的true或flase值Java 在acceleo中使用注释时出现问题,java,annotations,acceleo,Java,Annotations,Acceleo,我对acceleo非常陌生,对于文本生成(java语言),我正在使用ecore文件和.mtl模块。 在我的应用程序中需要注释,因此我在ecore模型中声明了注释。但问题是,我无法检查MTL文件中的注释详细信息(键、值)是否符合条件 .mtl文件中的我的情况是 [if(r.getEAnnotation('sourcename').details.key.equalsIgnoreCase('keyname'))] [if] 但这里的条件表达式在if块中是不可接受的,甚至在let块中也是不可接受的 我
如果有人知道此问题的解决方案,请重播我此表达式
r.getEAnnotation('sourcename')。详细信息
返回一个集合,因此“if”的条件是布尔值的集合,而不是布尔值的集合。您可以将其更改为以下内容:
[if(r.getEAnnotation('sourcename').details->first().key.equalsIgnoreCase('keyname'))] [/if]
或
“条件表达式在if块中不接受,甚至在let块中也不接受”是什么意思?当您尝试它时,该行上是否有编译错误?
[if(r.getEAnnotation('sourcename').details->collect(key.equalsIgnoreCase('keyname'))->size() > 0)]
[/if]