我在看grails(2.2),它很漂亮,甚至神奇,它是如何工作的。我正在查看一个Controller类,该类使用grails create-controller
创建,开箱即用,它具有许多可用的方法和属性,如render(),redirect(),params,request,我假设它继续。 这里所有这些接线?在代码/项目/框架中,我能看到render()是作为一个方法提供的吗?它是如何实现的? 作为一名java开发人员,我习惯于继承和代码注入和反射。而在JavaScript原型可以做一些黑魔法。但是XXController.groovy只是一个独立的对象。它是名称(XXController)还是位置(grails-app/controllers?),还是有一些注入事件可以让IDE选择?哪里有所有的方法,属性连线到grails控制器?
1
A
回答
1
而更多inyected的东西 - 。以前它是通过添加方法来Groovy的MetaClass的实现新方法的好处是,事情将是一个位速度更快,使用更少的内存。
GORM域类方法现在也使用这种方法(除了必须动态添加到元类的findByFooAndBar之类的动态方法外),并且由于AST将方法添加到字节码中,因此可以从Java调用这些方法。这对控制器没有任何帮助,因为它们只是作为Web请求的结果从Grails本身调用。
对于血淋淋的细节,ControllersApi是其中的方法是,他们正在通过ControllerTransformer组合和ControllersGrailsPlugin
2
欢迎的Grails的完美的事情的世界, 这里有几个链接,可以帮助您:
- 的Controllers在Web层文档的部分。
- 和render方法的文档。查看右边的“快速参考”列,了解更多控制器可用的方法。
如果你想知道的是魔术是如何完成的,Grails是一个open source project,所以像往常一样,去在Github上起到自己(警告,这是相当大的项目)。
Grails在Groovy的顶端工作,Groovy是一种动态语言,具有强大的元编程支持。最后,Grails是一个基于CoC(Convection over configuration)的框架,因此控制器将是目录“grails-app/controllers”下的任何类,并且与后缀“控制器”。 (在控制器的文件夹可能是“commandObjects以及)。
与众所周知的集成开发环境的整合是非常强大的,以及,你应该check it out
编辑 你可能也发现了如何渲染方法作为Grails的2.0+的它的使用AST转换来实现在github上表现here在Controllers metaClass package
相关问题
- 1. 应用程序控制器有哪些属性和方法?
- 2. 在grails中获取控制器中的所有方法3
- 3. 为控制器中的所有方法创建Grails URLMapping?
- 4. 所有控制器都可以访问的一种方法 - 放在哪里?
- 5. Grails的控制器方法
- 6. 将定制属性添加到所有symfony2控制器
- 7. RSpec - 无法获取控制器中的所有关联属性
- 8. 的Rails:在哪里把所有控制器
- 9. 我在哪里可以找到列出控件中所有状态的属性?
- 10. Grails的GORMS找到所有地方集合属性不为空
- 11. 创建跨控制器C#的所有方法可用共享属性
- 12. 使用控制器的属性/方法
- 13. 轨道4:往哪里放了为所有控制器
- 14. 确保每个控制器方法都具有ValidateAntiForgeryToken属性?
- 15. 控制哪些线有点?
- 16. “HttpContext.IsWebSocketRequest”属性和“HttpContext.AcceptWebSocketRequest”方法在哪里?
- 17. codeigniter:控制器中的私有属性
- 18. 如何省略字段有效性Grails的控制器的hasErrors()方法
- 19. 在哪里可以找到UIATarget类的所有方法?
- 20. 捕获所有控制器/路线
- 21. MVC控制器用户属性从哪里获取信息?
- 22. 控制器中的Grails默认方法
- 23. Grails的javascript调用控制器方法
- 24. 如何在grails中控制控制器中的私有方法2.2.4
- 25. 哪里可以定义所有Solr内核通用的属性?
- 26. 通用所有的控制方法
- 27. Grails的3网址和Grails没有控制器找到
- 28. Function.prototype的不显示所有内置的属性和方法在控制台
- 29. 制定控制器的所有操作方法ChildActionOnly
- 30. Yii上的RBAC - 与控制器方法的关联在哪里?
感谢这个在
doWithDynamicMethods
封闭的代码混合到每个控制器类,我想我应该已经提到我在2.X上 –