Веб-поток Grails: объединение нового набора параметров с существующей переменной потока - PullRequest
1 голос
/ 04 декабря 2010

Я пытаюсь заполнить класс домена в несколько этапов. У меня проблемы с "объединением" новых параметров в существующую переменную потока. Ниже вы увидите, как я сейчас это делаю (т.е. индивидуально настраиваю поля класса домена из объекта 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 ()
    }
}

1 Ответ

0 голосов
/ 04 декабря 2010

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

def validFieldsRegister2 = ["firstName", "lastName", "prefferedEmail"]
bindData(user, params,  [include: validFieldsRegister2])
...