2012-05-08 5 views
0

Javaクラスに動的プロパティを追加してJSONコンバータを使用してそのクラスをレンダリングしようとすると、何が欠けているのでしょうか。 私は純粋なJavaのPOJOを持っていると私は使用してそれに動的プロパティを追加してい:プロパティを印刷するときGrails/Groovyは既存のJavaクラスにプロパティを追加し、JSONコンバータを使用してシリアル化しようとすると失われますか?

// adding property 
ResetRequest.metaClass.targetIp = "192.168.0.1" 
// creating object 
ResetRequest obj = new ResetRequest() 
// printing the properties 
println obj.properties 

オブジェクトは、「targetIp」と呼ばれる追加のプロパティ を持っているので、すべては大丈夫そうですが、私はしようとすると、オブジェクト をJSONとしてレンダリングします。追加されたプロパティはJSON文字列にありません。

私には何か不足しているものがあります。

+0

こんにちはマルコ、私の答えを試してみましたか?それは動作しませんか? – loteq

答えて

3

GrailsでJSON変換が動的に追加されたプロパティを取得しないと思います。

問題のクラスに独自のオブジェクトマーシャラーを登録する必要がありますか?ブートストラップで

def init = {servletContext -> 
     JSON.registerObjectMarshaller(ResetRequest) {req-> 
      [ 
       targetIp:req.targetIp 
       //etc 
      ] 
    } 

UPDATE このリンクを使用すると、デフォルトマーシャラーを継承し、マーシャル特定のフィールドに独自のロジックを追加する方法を示しています。

http://grails4you.com/2012/04/restful-api-for-grails-domains/

1

あなたがすべきブートストラップのカスタムプロパティを登録すると、

def init = { servletContext -> 
    ResetRequest.metaClass.targetIp = {req -> 
    return "192.168.0.1"; 
    } 
} 
関連する問題