0

いくつかの高レベルの、できれば非常に簡単な質問:

1)単一のフィールドxを持つクラスAがある場合、それを構築しています

def A = new A(x:someVal, y:someVal) 

全然大丈夫?

2) 関連、以下はコマンド オブジェクトの関連部分をドメイン オブジェクトにコピーする良い方法ですか?

 def domainObject = new DomainObject(commandObject.properties).  

コマンドオブジェクトには追加のプロパティがあります。または、代わりに行う必要があります。

def domainObject = new DomainObject()
domainObject.properties['prop1', 'prop2', ...] = commandObject.properties

また ?

ありがとう

4

1 に答える 1

1

最初の質問では、バニラグルービーオブジェクトとgrailsドメインオブジェクトを区別することが重要です。をスローするGroovyオブジェクトMissingPropertyException。Grailsドメインオブジェクトは、余分なプロパティを黙って無視します。

2番目の質問に関しては、コマンドオブジェクトを使用してgrailsドメインオブジェクトを初期化するのが一般的なパターンであり、通常は問題ありません。パラメータはもう少し危険です。悪意のあるユーザーは何でもパラメータに入れることができるので、割り当てるプロパティを明示的に記述するのが最善です。そうしないと、タイムスタンプやユーザーのようなもの、または注入されたSpringBeanのようなマップされていない列でさえ影響を受ける可能性があります。

于 2011-10-04T22:12:27.217 に答える