model-view-controller - grails和MVC表单体系结构-每个表单使用两个操作..一般的行业模式?

标签 model-view-controller grails

我对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/

相关文章:

model-view-controller - Yii2如何从 View 中调用 Controller 操作

javascript - IE9 在 iframe 中加载脚本时抛出异常。为什么?

grails - 使用Dynamodb的Grails Spring 安全性

java - 使用 Grails 在 HQL 中按 ID 的子字符串作为整数排序

testing - Grails - 重新创建数据库模式以进行集成测试

JSP - 如何查找名称 (Tomcat/MVC)

model-view-controller - 什么时候使用工厂模式?

java - 哪个基于 Java 的 MVC 框架与 ASP.NET MVC 最相似?

grails - Grails密码约束功能

java - 使用 ThreadLocal 的库可能导致 Tomcat 中的内存泄漏