首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JVM forking时,Grails混合不起作用

使用JVM forking时,Grails混合不起作用
EN

Stack Overflow用户
提问于 2014-02-18 03:28:51
回答 1查看 146关注 0票数 5

在升级到Grails 2.3.5之后,我发现我的mixins只有在关闭JVM forking时才能工作。

我所有的控制器都有这样的代码

代码语言:javascript
运行
复制
import util.MyMixin

@Mixin(MyMixin)
class MyController {

其中MyMixin是在src/groovy/util中定义的,如下所示

代码语言:javascript
运行
复制
package util

class MyMixin {
    private def aMethod(someArgs) {
        // do something
    }
}

BuildConfig.groovy包含以下代码时

代码语言:javascript
运行
复制
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
]

然后我得到了下面的错误

代码语言:javascript
运行
复制
MissingMethodException occurred when processing request:
No signature of method: MyController.aMethod() is applicable for argument types

参数类型匹配的地方,当然,当我在BuildConfig.groovy中没有JVM forking代码时,代码可以正常工作。

在派生JVM时,我需要做什么特殊的事情才能让mixins工作吗?我之所以使用forking,是因为Grails 2.3.5推荐使用它,而我没有使用它时遇到了问题:Grails 2.3.5 requiring "grails clean" after every code change

EN

回答 1

Stack Overflow用户

发布于 2014-05-31 11:07:13

我在Grails域对象中使用Mixins时遇到了困难,听说您在使用控制器时遇到了困难,这并不奇怪。域、控制器和服务由Grails大量管理,难怪正常的@Mixins可能会以某种方式被破坏。我已经成功地通过metaClass构建器DSL注入了方法,如下所示:

代码语言:javascript
运行
复制
targetClass.metaClass {
    someMethod { someParam ->
        // do something
    }
}

你必须自己在所有的目标类上调用它...它不像@Mixin那样优雅,但似乎可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21837693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档