Архитектура форм grails & MVC - использовать два действия для формы. - PullRequest
1 голос
/ 05 октября 2011

Я немного новичок в Grails и вообще в Web MVC.Если посмотреть на архитектуру scaffolded grails и распространить ее на создание форм для веб-приложения для конечного пользователя, то, как представляется, шаблон посвящает два действия странице, которая собирает данные формы: первое - отображение страницы, включая любые ошибки из предыдущихотправляет, а второй действует на основе данных о представлении, вызывая ошибки и a) возвращаясь к первому действию, если это необходимо, или b) переходя к действию / контроллеру-преемнику, если ошибок нет.Является ли это типом «отраслевой стандарт» шаблон ... это должно быть?

Или кто-то может сделать эту работу одним действием в некоторых случаях ... или, возможно, использовать 3 действия в других случаях, например, одно для отображения ошибок?

PS Пожалуйста, игнорируйте мой комментарий ниже;Я немного обновил этот вопрос

--------- для целей обсуждения и для тех, кто читает с фоном 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])
    }
}

1 Ответ

1 голос
/ 05 октября 2011

Я бы сказал, что на данный момент это промышленный стандарт.Большинство веб-фреймворков Java реализуют идею перенаправления в представление, а не раскрывают технологию представления, предлагая пользователю перейти на страницу .jsp / .gsp / .html.Я считаю, что это стало более стандартным, когда скриптлеты (java-код в представлении) стали огромным анти-паттерном.В этот момент единственный способ получить данные в представлении состоял в том, чтобы получить данные на сервере, а затем направить эти данные в представление.

Даже когда мы перенаправляем, мы перенаправляем на действие на сервере, котороевперед к виду.Так что, к вашему мнению, ваши мысли верны, что у вас будет как минимум 2 действия.Хотя, в зависимости от сложности вашего приложения, в конечном итоге вы получите немного больше.Например, CRUD вашего скаффолдинга будет содержать 4 (индексировать, сохранять, обновлять, удалять)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...