2010-11-16 3 views
0

Je développe un workflow basé sur le flux web et pendant l'action d'initialisation j'essaye de remplir un ensemble d'objets de commande d'une classe de domaine unique, avec chaque objet de commande contenant juste un sous-ensemble des champs disponibles dans la classe de domaine ... BEAUCOUP de champs que vous voyez ..Comment remplir un objet Cmd avec un sous-ensemble de propriétés de la classe Domain?

Ce que je suis aux prises avec est de savoir comment remplir les 'propriétés' de chaque objet de commande avec seulement les propriétés correspondantes de la classe de domaine.

Est-ce que quelqu'un a déjà eu l'expérience de cela et sait comment l'accomplir?

Merci

Dave

+0

C'est basé Grails donc j'espère trouver une méthode Groovy pour accomplir le problème .. Aucune idée, peut-être que les gens n'acceptent pas toujours les réponses :-) – Dave

Répondre

3

Vous pouvez effectuer les opérations suivantes:

class Domain { 
    String lastName 
    String firstName 
    int age 
} 

class Command { 
    String lastName 
    int age 
} 

def domain = new Domain(lastName:'last', firstName:'first', age:33) 

def command = new Command() 
command.properties.findAll{ !["metaClass","class"].contains(it.key)}.each { k,v -> 
    command[k] = domain[k] 
} 

assert 33 == command.age 
assert 'last' == command.lastName  

Le problème avec .properties est qu'il comprend 'classe' et 'MetaClass'. Définir ces deux une mauvaise idée, donc ils sont filtrés.

+0

Merci Stefan, c'est exactement ce que je cherchais. – Dave

Questions connexes