1) "grails generate-all/generate-views"脚本实例化DefaultGrailsTemplateGenerator
2)DefaultGrailsTemplateGenerator会创建类DefaultGrailsDomainClass的实例"domainClass",这个domainClass将允许脚本得到domain class的所有信息,如:属性、GORM的映射关系、关系和约束等,如:
3) 针对所有属性(props)进行循环
// 将约束保存到cp
// 根据p的类型调用相应的renderEditor (保存在: renderEditor.template)
//在renderEditor.template中,将根据类型做不同的render
总结:通过执行grails install-templates,可以获得scaffold进行CRUD渲染的模板,这是一个最直接剖析内部机理的方式。
[size=medium]参考:[/size]
Grails Scaffolding in Depth by Jakob Külzer (http://www.jakusys.de/blog/2008/12/grails-scaffolding-in-depth/)
2)DefaultGrailsTemplateGenerator会创建类DefaultGrailsDomainClass的实例"domainClass",这个domainClass将允许脚本得到domain class的所有信息,如:属性、GORM的映射关系、关系和约束等,如:
props = domainClass.properties.findAll { !excludedProps.contains(it.name) }3) 针对所有属性(props)进行循环
// 将约束保存到cp
cp = domainClass.constrainedProperties[p.name]// 根据p的类型调用相应的renderEditor (保存在: renderEditor.template)
${renderEditor(p)}//在renderEditor.template中,将根据类型做不同的render
Switch(type)
{
Case: Enum
renderEnumEditor(domainClass, property)
Case: String
renderStringEditor(domainClass, property)
Case: Date
renderDateEditor(domainClass, property)
…
}总结:通过执行grails install-templates,可以获得scaffold进行CRUD渲染的模板,这是一个最直接剖析内部机理的方式。
[size=medium]参考:[/size]
Grails Scaffolding in Depth by Jakob Külzer (http://www.jakusys.de/blog/2008/12/grails-scaffolding-in-depth/)
本文解析了Grails框架中使用grailsinstall-templates命令生成视图模板的具体流程。通过实例化DefaultGrailsTemplateGenerator并获取Domain类信息,针对每个属性渲染对应的编辑器模板,最终实现CRUD操作的自动化。
583

被折叠的 条评论
为什么被折叠?



