2010-12-03 2 views
1

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

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

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() 
    } 
} 

ответ

0

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

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

Nice .., который работал. – mlathe 2010-12-06 22:27:25

Смежные вопросы