我对Grails和Web MVC有点陌生。查看脚手架的grails架构,并将其扩展到为最终用户Web应用程序构建表单,该模式似乎是对收集表单数据的页面执行两个操作:第一个显示该页面,包括先前版本的任何错误。提交,第二个对提交的数据采取行动,产生错误,并且a)根据需要返回至第一个操作,或者b)如果没有错误,则继续执行后续操作/ Controller 。
我的问题是,这是“行业标准”类型的模式吗?应该吗?
或者在某些情况下可以通过一项操作来替代这项工作...或者在其他情况下可以使用3种操作,例如也许一个用于显示错误?
附言请忽略下面我的评论;我更新了这个问题
---------出于讨论目的,以及具有Web MVC背景但不具有grails背景的读者,下面是grails生成的代码(版本1.3.7)
def create = {
def personInstance = new Person()
personInstance.properties = params
return [personInstance: personInstance]
}
def save = {
def personInstance = new Person(params)
if (personInstance.save(flush: true)) { // my additon: save causes validation to be performed against user specified constraints, returning true or false
flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), personInstance.id])}"
redirect(action: "show", id: personInstance.id)
}
else {
render(view: "create", model: [personInstance: personInstance])
}
}
最佳答案
我要说的是,这是行业标准。大多数Java Web框架都实现了转发到 View 的想法,而不是通过让用户导航到.jsp / .gsp / .html页面来公开 View 技术。我相信,当scriptlet( View 中的Java代码)开始成为巨大的反模式时,这已成为一种标准。那时,将数据放入 View 的唯一方法是在服务器上获取数据,然后将数据转发到 View 。
即使重定向,我们也重定向到服务器上转发到 View 的操作。因此,就您的观点而言,您认为通常至少要执行两次操作是正确的。虽然,根据您应用程序的复杂性,您最终会得到更多。例如,您的脚手架CRUD将包含4(索引,保存,更新,删除)
关于model-view-controller - grails和MVC表单体系结构-每个表单使用两个操作..一般的行业模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657034/