Gre*_*egg 5 grails controller traits
我有一个像这样定义的特征:
@Enhances(ControllerArtefactHandler.TYPE)
trait NullCheckTrait {
def nullCheck(def object) {
// code here
}
}
Run Code Online (Sandbox Code Playgroud)
当我nullCheck(foo)
从控制器调用时,出现No signature of method
异常。如果我implements NullCheckTrait
在控制器上,它工作正常。我读过它@Enhances
只有在我创建一个 grails 插件并将特征放在那里时才有效。我很好奇这是否是一个已知问题,以及是否有办法@Enhances
从与控制器相同的 grails 应用程序中使其工作。
不,没有办法解决这个问题,因为@Enhances
类在编译之前需要位于类路径上。例如,假设您的控制器类首先被编译,然后是您的特征,那么该特征将不会被应用,并且由于无法控制编译顺序,这仍然是一个问题。
在同一项目中完成此操作的唯一其他方法是在 Gradle 中设置额外的源集,请参阅:
归档时间: |
|
查看次数: |
461 次 |
最近记录: |