2010-12-03 23 views
1

J'essaie de remplir une classe de domaine en plusieurs étapes. J'ai du mal à "fusionner" les nouveaux paramètres dans la variable de flux existante. Ci-dessous vous verrez comment je le fais actuellement (c.-à-d. En réglant individuellement les champs de classe de domaine de l'objet params).Grails webflow: fusion d'un nouvel ensemble de paramètres avec une variable de flux existante

Y a-t-il une meilleure façon de procéder?

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

Répondre

0

Vous pouvez définir un tableau de champs autorisés par page et limiter à ce nom de domaine en utilisant BindData:

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

de Nice .. qui a fonctionné. – mlathe