2017-06-25 5 views
0

内のオブジェクトにStringを割り当てません。 Stringに、それは正常に動作します。デバッグを行うと、Dog.nameが割り当てられないことがわかります。nullです。上記のように構築した後、私がdog.nameを通常の割り当てで設定すると、テストに合格します。マップコンストラクタは、次のドメインクラスを考えるとGrailsの

この問題は、同じマップコンストラクタの割り当てを使用するGroovy Scriptでは発生しません。

私のタイプはObjectになりますが、ユースケースによって異なります。

これはなぜ起こっているのですか?それはGrailsのバグですか?

+0

GORMは 'Object'データのシリアライザを見つけることができないように見えます入力してサイレントに失敗します – injecteer

+0

GitHubの[this](https://github.com/grails/grails-core/issues/10692)バグレポートを参照してください。 –

答えて

0

私はデバッグをいくつか行いました。フィールドがオブジェクトを受け入れると、grailsフレームワークはこのプロパティでデータバインディングを実行しないことがわかりました。

具体的には、Dog#nameフィールドは、Objectとして宣言されている場合、プロパティのホワイトリストに属しません。

これが機能しない理由です。

デバッグしたい場合は、あなたがそこにブレークポイントを置く場合は、Grailsのプロパティのホワイトリストを作成する方法について説明します

grails.web.databinding.DataBindingUtils#getBindingIncludeList(final Object object) 

を参照してください。

これはセキュリティに関連しているので、これは多くの意味があると思います!それにもかかわらず、オブジェクトフィールド上のあなたのwannaバインドした場合

here

それについての詳細を参照してください、このコードはあなたを助けるかもしれない:

class Dog { 
    Object name 
    static constraints = { 
    name(bindable: true) 
    } 
} 
関連する問題