create-scriptコマンドを見てください。あなたは、コード生成を行うには、独自のスクリプトを作成することができますが、私はそれはあなたがGrailsの3でGORMドメインのプロパティへのアクセスを取得することができます信じていません
create-script User Guide
create-script quick ref...
(1) 。
How can I access GORM object properties in a GroovyScriptCommand?
最初にinstall-templatesコマンドを実行してから、必要に応じてcreate-scriptコマンドを実行しましたが、表示するテンプレートが限られていました。
私が作成した例です。私はprintlnステートメントを置くだけで、モデル上のさまざまなプロパティが私が扱わなければならないことが分かりました。彼らは、あなたが入力したコマンドラインの引数に基づいており、実際のGrailsの成果物のインスタンスではないので、少し制限されています。
のsrc /メイン/スクリプト/下駄作成画面-グルーヴィー:
import grails.build.logging.ConsoleLogger
description("Creates a GETA scaffolded controller, views, and integration test artifacts") {
usage 'geta-create-screen [domain name]'
completer org.grails.cli.interactive.completers.DomainClassCompleter
argument name:'Controller Name', description:"The name of controller", required:true
flag name:'force', description:"Whether to overwrite existing files"
}
def model = model(args[0])
def overwrite = flag('force') ? true : false
println "DAC: model.className:..... ${model.className}"
println "DAC: model.fullName:...... ${model.fullName}"
println "DAC: model.propertyName:.. ${model.propertyName}"
println "DAC: model.packageName:... ${model.packageName}"
println "DAC: model.simpleName:.... ${model.simpleName}"
println "DAC: model.lowerCaseName:. ${model.lowerCaseName}"
println "DAC: model.packagePath:... ${model.packagePath}"
render template: template('scaffolding/EtaController.groovy'),
destination: file("grails-app/controllers/${model.packagePath}/${model.convention("Controller")}.groovy"),
model: model,
overwrite: overwrite
render template: template('scaffolding/EtaDomainObject.groovy'),
destination: file("grails-app/domain/${model.packagePath}/${model.convention("Domain")}.groovy"),
model: model,
overwrite: overwrite
render template: template('scaffolding/EtaService.groovy'),
destination: file("grails-app/services/${model.packagePath}/${model.convention("Service")}.groovy"),
model: model,
overwrite: overwrite
render template: template('scaffolding/EtaGsp.gsp'),
destination: file("grails-app/views/${model.packagePath}/${model.propertyName}/${model.propertyName}.gsp"),
model: model,
overwrite: overwrite
render template: template('scaffolding/EtaGspTabHeader.gsp'),
destination: file("grails-app/views/${model.packagePath}/${model.propertyName}/_tabHeader.gsp"),
model: model,
overwrite: overwrite
return true
テンプレート:実行するには のsrc /メイン/テンプレート/足場/ EtaController.groovy
<%=packageName ? "package ${packageName}" : ''%>
class ${className}Controller {
static scaffold = ${className}
def index(){
render view: "${packageName.replaceAll('\\\\', '/')}/${propertyName}/${propertyName}.gsp"
}
}
コマンド: grails geta-create-screen my.package.MyClass --force --stacktrace --verbose
出典
2016-02-23 17:03:49
DAC
いいえ 'generate-controller'はコントローラの実際のファイル/クラスを作成しますscaffoldin特定のドメインクラス。このようなファイルが数十ある場合を考えてみましょう。たとえば、「すべての保存アクションは、編集アクションを呼び出す前のコントローラーにリダイレクトする必要があります」など、アプリケーション全体の動作を変更したいと考えています。 'templates/Controller.groovy'は、コントローラ内の' static scaffold = domain.class'によってオンザフライで作成されたすべての動的スキャホールドをテンプレート化したファイルでした。 – mkr