2010-10-29 47 views
4

我在Grails中創建了一個REST服務來接受來自python腳本的數據。 python腳本生成對象圖的XML表示並將其提交給控制器。事情對我的平面物體很好,但我無法弄清楚如何處理域對象包含一組子對象的情況。由於不相關的原因,我的DOA層是純Java JPA。Grails:使用XML數據綁定保存嵌套對象

例如,我的領域類(離開了getter/setter方法的/ etc):

class Schedule { 
    String name; 
    @OneToMany; 
    HashSet<Step> steps; 
} 

class Step { 
    String name; 
    @ManyToOne; 
    Schedule schedule; 
} 

我的Python腳本生成的XML如下所示:

<schedule> 
    <name>Foo</name> 
    <steps> 
    <step> 
     <name>Bar</name> 
    </step> 
    <step> 
     <name>Blatz</name> 
    </step> 
    </steps> 
</schedule> 

在我的控制器我有這樣的:

def save = { 
    def schedInstance = new Schedule(params['schedule']) 
    ... 
} 

steps屬性永遠不會被填充。如果我將params轉儲到日誌中,步驟數據全部卡在一起(在我上面的示例中,它將產生步驟:「BarBlatz」

我必須做一些非常錯誤的事情,我會想象這是一個常見任務我已經能夠找到的有關嵌套對象的一切命令對象有關。我不想有重複我的域對象代碼的命令對象,如果我能避免它。

+0

如果你有時間,一槍!並嘗試生成一個JSON文件,而不是一個XML,並讓我知道它是否發生相同?!?! – 2011-08-10 14:48:36

回答

1
def save = { 
    def schedInstance = new Schedule(params['schedule']) 
    params['schedule?.step'].each{stepXml-> 
     schedInstance.addTo(new step(stepXml) 
    } 
} 

未經檢驗的,但我之前做過類似的事情 只要我有機會測試它,我會盡快編輯它