【发布时间】:2014-02-17 19:28:51
【问题描述】:
升级到 Grails 2.3.5 后,我发现我的 mixin 仅在 JVM 分叉关闭时才能工作。
我所有的控制器都有这样的代码
import util.MyMixin
@Mixin(MyMixin)
class MyController {
MyMixin 在 src/groovy/util 中定义,看起来像
package util
class MyMixin {
private def aMethod(someArgs) {
// do something
}
}
当BuildConfig.groovy包含以下代码时
forkConfig = [maxMemory: 1024, minMemory: 64, debug: false, maxPerm: 256]
grails.project.fork = [
test: forkConfig, // configure settings for the test-app JVM
run: forkConfig, // configure settings for the run-app JVM
war: forkConfig, // configure settings for the run-war JVM
console: forkConfig // configure settings for the Swing console JVM
]
然后我得到以下错误
MissingMethodException occurred when processing request:
No signature of method: MyController.aMethod() is applicable for argument types
当我在BuildConfig.groovy 中没有 JVM 分叉代码时,参数类型匹配的地方当然代码可以工作。
在 fork JVM 时,我需要做一些特别的事情来让 mixin 工作吗?我只使用分叉是因为 Grails 2.3.5 推荐它,但我在不使用它时遇到了问题:Grails 2.3.5 requiring "grails clean" after every code change
【问题讨论】:
-
我不知道有什么不同。我该怎么说?带有“mixin”的导入中没有任何内容......应该有吗?
-
那我猜你正在使用
groovy.lang.Mixin。尝试使用另一个。 -
好的...所以我尝试使用以下代码
@groovy.lang.Mixin(MyMixin)和@grails.util.Mixin(MyMixin)显式使用grails 和groovy Mixin,并且当grails mixin 失败时,groovy mixin 工作。我应该担心这个吗?解决问题的最佳方法是什么?更改我所有的 mixin 以明确引用 groovy mixin? -
好吧,这很有趣。今天,
@groovy.lang.Mixin和@grails.util.Mixin都不工作。
标签: grails grails-2.3