Веб-поток Grails: объединение нового набора параметров с существующей переменной потока

Я пытаюсь заполнить класс домена за несколько шагов. У меня возникли проблемы с "объединением" новых параметров в существующую переменную потока. Ниже вы увидите, как я сейчас это делаю (т.е. индивидуально устанавливаю поля класса домена из объекта params).

Есть лучший способ сделать это?

class UserController {
    def scaffold = User

    def index = {
        redirect(action:'registration')
    }
    def registrationFlow = {
        register1 {
            on("continue") {
                transient user = new User(params)
                flow.user = user
                if(!user.validate(['loginName', 'password'])) {
                    return error()
                }
            }.to "register2"
        }
        register2 {
            on("register") {
                transient user = flow.user;
                //TODO: is there a better way to merge the flow.user with the params?
                user.firstName = params.firstName;
                user.lastName = params.lastName;
                user.preferredEmail = params.preferredEmail;
                if(!user.validate()) {
                    return error()
                }
            }.to "registerFinal"
            on("return").to "register1"
        }
        registerFinal ()
    }
}

person mlathe    schedule 03.12.2010    source источник


Ответы (1)


Вы можете определить массив разрешенных полей на странице и ограничить их именем поля, используя binddata:

def validFieldsRegister2 = ["firstName", "lastName", "prefferedEmail"]
bindData(user, params,  [include: validFieldsRegister2])
person Stefan Armbruster    schedule 04.12.2010