大致思路:
[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均來自對於模板目錄