私のコードでは、Enum型のドメインオブジェクトを持っています。その列挙型は、データベースから節約し、検索します。私はドメインオブジェクトのリストをjsonセルに変換しています。列挙型を除くすべてのフィールドは、文字列かロングのいずれかです。 jsonが '反対側で'ピックアップされると、列挙型の名前または列挙型の値ではなく、列の[オブジェクトオブジェクト]が表示されます。これに役立つドメインまたはJSON側に何かがありますか?enumのGrails jsonセル
ドメインクラス以下のコード/例
class MyDomain {
long id
long otherValue
MyEnum enu //Nullable per constraints
//Mapping and constraints are not special.
}
列挙
enum MyEnum {
ENUM1("Value1"),ENUM2("Value2")
//constructor ommitted
String myValue
String toString() { myValue }
JSON細胞の作成
def jsonCells = domainList.collect
{
[cell: [
it.id,
it.otherValue,
it.enu?.value
],
id: it.id]
}
it.enuは?.VALUE作品。しかし、毎回その値を呼び出す必要がなく、オブジェクトに頼ることができる場所であれば、これを行うにはどうにかしてより良い方法がありますか?私は、toStringメソッドをオーバーライドするとそれを処理していると仮定していたでしょうが、明らかに私は間違っていました。私はそれが小さな問題のように思えますが、 ".value"を忘れるのは簡単です。特に、同じenumが多くのドメインオブジェクトで使用されるためです。アイデア?
これは意味があります。私たちのほとんどがJavaプログラマーでgroovy/grailsに入っているので、it.enuVal()を呼び出すことを覚えておくと、it.enu?.valueを呼び出すことよりも簡単です。私は、私たちがit.enu.valueをデータ・ディスプレイを完全に消滅させるit.enu.valueと呼ぶことを心配しています:) – Joseph
@Joseph - ドメインを常に同じ方法でレンダリングしている場合、別のオプションはメソッドを作成することです必要に応じて書式設定されたプロパティのリストを返すドメイン(例えば、 'toJson()')上で実行されます。しかし、それはあなたの要件と使い方にかかっていると思います。 –