1

名前と値のペアを持つマップがあります。

def myMap = [
  "username"  : "myname",
  "age" : 30,
  "zipcode" : 10010
]

User defined というクラスがあります。

class User {
  def username;
  def age;
  def zipcode;
}

Bean で適切なセッターを呼び出したいと思います。これを行う素晴らしい方法はありますか?注意してください、設定されない myMap に余分なものがあるかもしれません。(マップはフォームパラメータ値マップです)

私はinvokeMethodを使用することを考えていましたが、もっと良い方法があると思っていました.

4

1 に答える 1

3

私はこれを見つけました:Groovy - あるオブジェクトから別のオブジェクトへのプロパティのバインド

そして、私は次のことができることに気づきました:

def prunedMap = [:]
myMap.each{
    if (User.metaClass.properties.find{p-> p.name == it.key}) {
        prunedMap.put(it.key, it.value)
    }
}

User user = new User(prunedMap)
于 2010-10-09T22:18:57.657 に答える