我正在查看使用grails generate-all
生成的控制器。是否存在create
和save
行为的原因?仅将create
作为操作并将save
作为服务对我来说更有意义。像这样:
def create = {
if (params.create) { //this is the save button
if (!domainService.save(params)) {
render(view: "create", model: [domain: new Domain(params)]) //show validation errors
}
else {
render(view: "show", id: params.id)
}
}
else {
render(view: "create") //show blank form
}
}
有什么理由说明我应该同时采取create
和save
行动,而不是沿着这条路走下去?脚手架控制器在我的意见中太重了,我正在寻找方法使其更加简洁(我使用脚手架代码来学习grails)。
答案 0 :(得分:1)
创建操作是创建新域实例的首次输入,而save是一个尝试保存的简单操作。这些操作在控制器中有明确的名称和简单的代码。
但您的方法存在一些问题。你有两个if-else级别 - 它可能有问题,并且它不易于阅读和维护。您需要创建和维护实际执行控制器作业的domainService。无需将简单的save()拆分为服务。
至于我,默认生成的grails控制器比你的简单得多。