大致思路:
[list=1]
[*]运行install-templates安装模板,并在/src/templates/scaffolding目录下建立不同的模板目录,如: TreeView并放入定制的Controller.groovy以及*.gsp模板
[*]对命令行进行改造,在Scaffolding生成前指定模板名称:
generate-controller package.domain
generate-views package.domain
==>
generate-controller package.domain TreeView
generate-views package.domain TreeView
[*]对脚本_GrailsGenerate.groovy进行改造,解析通过argsMap传递的脚本名称
String template =argsMap['params'].size() >1 ? argsMap['params'][1] : "default"
并通过generateForDomainClass方法将template赋值给:
DefaultGrailsTemplateGenerator
[*]对AbstractGrailsTemplateGenerator类(Java)进行改造,增加:
增加成员变量: public String templateName = "default";
修改方法,接受模板参数:
AbstractResource getTemplateResource(String template) throws IOException {
修改获取模板的目录:
String name = "src/templates/scaffolding/"+templateName+"/" + template;
[/list]
验证方法:
generate-controller business.Domain TreeView
generate-views business.Domain TreeView
验证生成的Controller以及Views均来自对于模板目录