bootstrap 中的 Grails 全局函数
Grails global function in bootstrap
我正在使用 Grails 2.1.0 并遇到了这个 2 岁的 post:Is there a way to make functions accessible across controllers in Grails?
在那里,Burt 建议创建一个函数,所有使用 Bootstrap 的控制器都可以访问该函数。我已经尝试过它的工作原理,但是每次我修改控制器(添加或删除您可能想到的任何东西)时,Grails 都会给我:
No signature of method:
mycontroller.myfunctionfrombootstrap() is applicable for
argument types: () values: []
这是 Grails 2.1.0 的 "feature" 吗?我错过了什么吗?
升级 Grails 不是一个选项。
在 bootstrap 我有:
for (controllerClass in grailsApplication.controllerClasses) {
controllerClass.clazz.metaClass.myfunctionfrombootstrap= {
return stuff;
}
}
当您在开发模式下修改控制器时,Grails 会重新编译它并插入新的 class 以替换以前的版本。但是 bootstrap 不会再 运行,所以新的 class 不会将您的额外功能添加到其元 class.
您应该考虑将可重用逻辑放入服务或标签库中,而不是使用元class。
我正在使用 Grails 2.1.0 并遇到了这个 2 岁的 post:Is there a way to make functions accessible across controllers in Grails?
在那里,Burt 建议创建一个函数,所有使用 Bootstrap 的控制器都可以访问该函数。我已经尝试过它的工作原理,但是每次我修改控制器(添加或删除您可能想到的任何东西)时,Grails 都会给我:
No signature of method: mycontroller.myfunctionfrombootstrap() is applicable for argument types: () values: []
这是 Grails 2.1.0 的 "feature" 吗?我错过了什么吗?
升级 Grails 不是一个选项。
在 bootstrap 我有:
for (controllerClass in grailsApplication.controllerClasses) {
controllerClass.clazz.metaClass.myfunctionfrombootstrap= {
return stuff;
}
}
当您在开发模式下修改控制器时,Grails 会重新编译它并插入新的 class 以替换以前的版本。但是 bootstrap 不会再 运行,所以新的 class 不会将您的额外功能添加到其元 class.
您应该考虑将可重用逻辑放入服务或标签库中,而不是使用元class。