【发布时间】:2013-09-18 13:09:58
【问题描述】:
根据documentation,Grails 控制器只是一个在名称后附加“Controller”并保存在grails-app/controllers/ 中的类。此类中最简单的是:
package some.package
class FooController {
def index = {}
}
当 Grails 应用程序运行时,此控制器将继承一些标准方法,例如 getParams 和 getSession。从随附的屏幕截图中,我可以看到这些是通过groovy.lang.ExpandoMetaClass 添加的。我没有看到这是如何发生的。控制器不实现任何接口或扩展任何抽象。这些方法从何而来?
【问题讨论】:
-
添加方法和属性可以通过 Groovy 运行时和编译时元编程来完成。 Grails 使用这些策略使“魔法”发生。它按约定修改所有控制器。你是在问它的实际代码在哪里?
-
这就像问彩虹是从哪里来的。他们太棒了,谁在乎!!
-
@JamesKleeh 如果这是唯一的答案,是的。当我对某事有疑问时,我不喜欢不知道在哪里寻找答案。在这种情况下,我在哪里可以了解控制器可用的所有“继承”方法以及它们的作用?到目前为止,我必须设置一个断点,挖掘图表,然后猜测。
-
@Gregg 如果没有人想知道彩虹的起源,我们就不会有棱镜。如果没有棱镜,我们就不会进行这种对话。
标签: grails